4 Stimmen

Wie kann man Console.WriteLine() zwingen, wortwörtliche Zeichenfolgen zu drucken?

Mögliches Duplikat:
Kann ich einen C#-String-Wert in ein escaped String-Literal konvertieren

Wie kann ich eine Zeichenfolge (über Console.WriteLine()) drucken, so dass alle Escape-Sequenzen, die in der Zeichenfolge vorhanden sein können, wortwörtlich gedruckt wird?

Beispiel:

string s = "This \r\n has \t special \\ characters.";
Console.WriteLine(s);

/* Output (I don't want this)

This 
 has    special \ characters.

*/

Ich möchte, dass die Ausgabe lautet:

This \r\n has \t special \\ characters.

Beachten Sie, dass ich in meiner Anwendung die Zeichenkette (die die Escape-Sequenzen enthält) von einem Dritten erhalte - d. h., wenn ich die Zeichenkette selbst erstellen würde, bin ich mir bewusst, dass ich einfach Folgendes tun könnte

string s = @"This \r\n has \t special \\ characters.";

5voto

JaredPar Punkte 699699

Die einzige Möglichkeit, dies zu tun, besteht darin, die Escape-Sequenzen selbst zu dekodieren und sie als literale Einträge in die Zeichenkette zurückzugeben. Dies würde eine Art von Konvertierungsfunktion erfordern. Zum Beispiel

string EscapeIt(string value) {
  var builder = new StringBuilder();
  foreach (var cur in value) {
    switch (cur) {
      case '\t': 
        builder.Append(@"\t");
        break;
      case '\r': 
        builder.Append(@"\r");
        break;
      case '\n':
        builder.Append(@"\n");
        break;
      // etc ...
      default:
        builder.Append(cur);
        break;
    }
  }
  return builder.ToString();
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X