Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

String enthält bei der Ausgabe mehr Backslashes als im String-Literal stehen
Hans18
myCSharp.de - Member



Dabei seit:
Beiträge: 13

Themenstarter:

String enthält bei der Ausgabe mehr Backslashes als im String-Literal stehen

beantworten | zitieren | melden

Guten Morgen,

ich muss einen Regex-String aus mehren Literalen zusammenfügen. Ich habe aber nun das Problem, dass Escape-Zeichen dupliziert sind. Beispiel:

public const string P1 = @"\\SAP[0-9]"
public const string CDS = @"\\CPRD[0-9]"
		
public static string PatternTest = P1 + CDS;
Ergibt laut Console.Writeline
\\\\SAP[0-9]\\\\CPRD[0-9]""

Wenn ich den Pattern in Expresso verwende geht es. Aber in C# wegen diesem Fehler nicht.
Wo ist mein Denkfehler????
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Hans18 am .
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo Hans18,

das kann ich nicht bestätigen:


using System;

static class App
{
   public const string P1 = @"\\SAP[0-9]";
   public const string CDS = @"\\CPRD[0-9]";

   public static string PatternTest = P1 + CDS;

   public static void Main (string [] astrArg)
   {
      Console.WriteLine (PatternTest);
   }
}

liefert
\\SAP[0-9]\\CPRD[0-9]

Wenn du Literale mit @ verwendest (siehe [FAQ] Was bedeutet das @ (=at) vor String-Literalen? Und: Wissenswertes zu Escape-Sequenzen), sind im resultierenden String(-Objekt) soviele Backslashes enthalten, wie du ins Literal hineinschreibst. Nicht mehr und nicht weniger.

Fügt man zwei solche Strings zusammen, dann werden sie einfach aneinander gehängt, ohne dass sich die Gesamtzahl der Backslashes verändert.

Sollten später tatsächlich mehr Backslashes angezeigt werden, dann sind sie durch eine spätere Änderung entstanden. Da müsstest du mal suchen.

BTW: Man darf nicht auf den Debugger hineinfallen, denn der doppelt alle Backslashes bei der Anzeige von Variableninhalten.

String, String-Literale und String-Operationen fallen allerdings unter [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

herbivore
private Nachricht | Beiträge des Benutzers