Wie kann ich am Ende der Zeichenfolge in C # \ Symbol hinzufügen

7

Bitte vergib mir eine Anfängerfrage:)

%Vor%

wird nicht kompiliert.

%Vor%

macht S="abc \\"

Wie kann ich S="abc" machen?

    
RRM 15.02.2013, 13:17
quelle

8 Antworten

13

Ihr zweites Stück Code ist was Sie wollen (oder ein wörtliches Stringliteral @"\" wie andere vorgeschlagen haben), und es fügt nur einen einzigen Backslash hinzu - drucken Sie es auf die Konsole und Sie ' Ich sehe das.

Diese zwei Teile des Codes:

%Vor%

und

%Vor%

sind genau äquivalent. In beiden Fällen wird ein einzelner umgekehrter Schrägstrich 1 angehängt.

Ich vermute, dass Sie von der Debugger-Ansicht verwirrt werden, die umgekehrte Schrägstriche (und einige andere Zeichen) entzieht. Sie können das sogar mit dem Debugger überprüfen, indem Sie S.Length betrachten. Sie sehen 4 anstatt 5.

1 Beachten Sie, dass die Daten in der vorhandenen Zeichenfolge nicht geändert werden, der Wert von S jedoch auf eine neue Zeichenfolge gesetzt wird, die aus besteht das Original mit einem Backslash am Ende. String-Objekte in .NET sind unveränderlich - aber das ist ein ganz anderes Thema ...

    
Jon Skeet 15.02.2013 13:19
quelle
5

Versuchen Sie Folgendes:

%Vor%

@ = Verbatim String-Literal

Ссылка

Ссылка

    
jerone 15.02.2013 13:19
quelle
4
%Vor%

Sollte und führt zu abc\ .

Was Sie wahrscheinlich sehen, ist die Art, wie der Debugger / intellisense die Zeichenfolge für Sie visualisiert. Versuchen Sie, Ihre Zeichenfolge auf der Konsole auszugeben oder in einem Textfeld anzuzeigen.

    
hometoast 15.02.2013 13:20
quelle
2

Sie haben bereits die Lösung. Der Grund, warum es beim Debuggen als abc\ angezeigt wird, ist, dass VS Backslashes entkommt, den Wert von S in ein Konsolenfenster druckt und Sie abc\ sehen. Sie könnten ein @ zum Anfang des Zeichenfolgenliterals hinzufügen, z. B.

%Vor%

Was das Gleiche erreichen wird.

    
DGibbs 15.02.2013 13:19
quelle
1

Ihr zweites Beispiel ist vollkommen in Ordnung

%Vor%

Visual Studio zeigt die Zeichenfolge maskiert an, deshalb sehen Sie in der Ergebniszeichenfolge zwei Schrägstriche. Wenn Sie die Deklarationszeichenfolge nicht wie folgt verwenden möchten

%Vor%

Dies wird nicht kompiliert, da der Compiler nach dem Escape-Symbol ein Zeichen erwartet

%Vor%     
Anri 15.02.2013 13:22
quelle
1

Sie können den umgekehrten Schrägstrich mit dem @ -Zeichen umgehen:

%Vor%

Aber das erreicht genau das, was Sie in Ihrem zweiten Beispiel geschrieben haben. Die Verwirrung hierauf rührt von der Tatsache her, dass der Debugger von Visual Studio diesen Zeichen weiterhin ausweicht, obwohl die Quellzeichenfolge nur einen einzigen umgekehrten Schrägstrich enthält.

    
RainbowFish 15.02.2013 13:20
quelle
0
%Vor%

Sie werden sehen, dass Ihre Zeichenfolge überhaupt nicht falsch ist.

Der umgekehrte Schrägstrich ( \ ) ist ein Escape-Zeichen und ermöglicht das Abrufen von Sonderzeichen, die normalerweise nicht in eine Zeichenfolge eingefügt werden könnten, z. B. "\r\n" , die ein NewLine -Zeichen darstellt. oder "\"" , was im Grunde ein " -Zeichen ergibt.

Um das \ -Zeichen zu erhalten, müssen Sie "\" eingeben, was genau das ist, was Sie tun und was Sie auch wollen.

Die Verwendung des Verbatims ( @ ) ersetzt alle Vorkommen von \ in \ , also @"\" == "\" . Dies wird normalerweise für Pfade und Regexes verwendet, wobei Literal \ in großen Zahlen benötigt wird. Das Sagen von @"C:\MyDirectory\MyFile" ist komfortabler als das von "C:\MyDirectory\MyFile" .

    
Nolonar 15.02.2013 13:26
quelle
-2

Versuchen Sie es

%Vor%     
Utkarsh 15.02.2013 13:23
quelle

Tags und Links