2017-06-07 4 views
0

Hier ist ein Beispiel: "\\\r\\\n\\\u003c"Wie ersetzen "\" auf "" C#

Erwartetes Ergebnis: "\r\n\u003c"

ich string.Replace(@"\\\", @"\"); versucht, aber es funktioniert nicht.

+1

'\ n ',' \ r' und '\ u003c' Stringdarstellungen von Zeichen sind. Jede von ihnen ist keine Zeichenfolge, sondern ein einzelnes Zeichen. Ich bin mir nicht sicher, was Sie tun wollen, aber Sie sollten das wissen. –

+0

@Theraot - Ich habe nicht verstanden, was Sie sagen wollen! Würden Sie etwas anders formulieren? –

+1

Es sieht für mich wie ein Fall des [XY-Problems] aus (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). OP könnte versuchen, Backslashes zu ersetzen, aber eigentlich würde der String schon wie "\ r \ n \ u003c" aussehen, da der Backslashed maskiert ist ("\\"). Nun, vielleicht will OP nicht wirklich "\ r \ n \ u003c", sondern eine neue Zeile gefolgt von "<", dann ist das das Parsen von Escape-Sequenzen, was ein ganz anderes Problem ist. Nur [das Hinzufügen von mehr Backslashes ist aus meiner Perspektive zum Scheitern verurteilt] (https://www.xkcd.com/1638/). – Theraot

Antwort

4

Sie können die Methode Regex.Unescape für diesen Ansatz verwenden. Es wird alle doppelten \\ durch \ ersetzen.

0

Ersetzen Sie die volle Char \\n zu \n. Dein Weg funktioniert nicht, weil ein Backslash verwendet wird, um Zeichen zu entkommen.

1

Schwer zu sagen, da Sie nicht Ihren genauen Code zeigen, aber möglicherweise speichern Sie nicht das Ergebnis Ihrer string.Replace(). Dein Code sieht gut aus.

Das Symbol @ vor Ihren literalen Zeichenfolgen macht sie wörtlich wörtliche Zeichenfolgen und verhindert daher, dass die Backslashes als Escape-Zeichen verwendet werden, was Sie hier haben möchten.

string.Replace() ändert nicht die Eingabezeichenfolge, sondern gibt die geänderte Zeichenfolge zurück. Vielleicht verwenden Sie nicht den Rückgabewert von string.Replace().

Der folgende Code funktioniert:

var stringWithDoubleSlashes = @"\\r\\n\\u003c"; 

var stringWithSingleSlashes = stringWithDoubleSlashes.Replace(@"\\", @"\"); 
Console.WriteLine(stringWithSingleSlashes); // displays \r\n\u003c