Ich verwende Regex, um eine Zeichenfolge von Unicode und speichern Sie es in einer Zeichenfolge. Zum Beispiel:C#. NET ist keine russische Zeichen
HINWEIS: Der folgende Inhalt muss aus einer externen Textdatei gelesen werden, da Visual Studio dies automatisch in Russisch rendert.
"Name": "\u0412\u0438\u043d\u043d\u0438\u0446\u0430, \u0443\u043b. \u041a\u0438\u0435\u0432\u0441\u043a\u0430\u044f, 14-\u0431",
Ich bin mit dem Muster:
"\"Name\":\\s*\"(?<match>[^\"]+)\""
Allerdings, wenn ich das Spiel in einer Zeichenfolge zu speichern, wird die Zeichenfolge gespeichert als:
match = "\\u0412\\u0438\\u043d\\u043d\\u0438\\u0446\\u0430, \\u0443\\u043b. \\u041a\\u0438\\u0435\\u0432\\u0441\\u043a\\u0430\\u044f, 14-\\u0431"
.NET die Speicherung Zeichenkette mit einem zusätzlichen "\"
Ich versuchte mit:
match = match.replace(@"\\", @"\")
aber .NET erkennt @ "\\" nicht als vorhanden, da es sich um die "Visualizer-Version" handelt.
Wie kann ich meinen Unicode speichern, ohne ein zusätzliches '\' hinzuzufügen?
EDIT: Ein weiterer Punkt:
// this works!
string russianCharacters = "\u041b\u044c\u0432\u043e\u0432, \u0414\u043e\u043b\u0438\u043d\u0430, \u0432\u0443\u043b. \u0427\u043e\u0440\u043d\u043e\u0432\u043e\u043b\u0430, 18");
Dies macht richtig in dem Visualizer als russische Zeichen. Aber wenn ich Zeichen aus einem regulären Ausdruck von einer externen Textdatei speichern, wird es als eine excaped Sequenz gespeichert.
Wie kann ich meine Zeichenfolge als russische Zeichen anstelle einer Escape-Sequenz von Unicode rendern?
Ähm, nein. .NET macht so etwas nicht. Vielleicht sind Sie verwirrt, weil der Debugger * * .NET-Zeichenfolgen anzeigt? Versuchen Sie stattdessen, die Zeichenfolge in eine reine Textdatei zu speichern, und Sie werden sehen, wie sie tatsächlich aussieht (verwenden Sie 'Encoding.Unicode', um sicher zu sein).Das '\\' existiert nur im "Visualizer", deshalb können Sie es nicht ersetzen, nicht umgekehrt. .NET schaut nicht auf die "Visualizer" -Version, Sie sind. – Luaan
Nein, ** Sie ** sehen sich die Visualizer-Version an. Es gibt keine doppelten Backslashes. Was willst du erreichen, indem du solche Strings speicherst? – CodeCaster
HTMLDecode arbeitet mit einer Zeichenfolge, die zuvor mit HTMLEncode codiert wurde. Da Ihre Zeichenfolge nicht codiert ist, kann .NET nicht dekodiert werden. siehe https://msdn.microsoft.com/en-us/library/system.web.httputility.htmldecode(v=vs.110).aspx – Saleem