将Unicode字符转换回其原始字符串表示形式

时间:2019-07-30 14:38:00

标签: c# string unicode

我有一个定义为public const string Numeric0 = "\u0030";的字符串。 C#将其解释为Unicode字符,这对我的应用程序的一部分很有用,但我也想以其原始"\u0030"格式输出字符串。我从SO那里尝试了大多数相关的答案,但实际上并没有取得任何进展。有想法吗?

预期的C#输入:

public const string Numeric0 = "\u0030";
var str = SomeOperation(Numeric0);

预期输出:

str == @"\u0030"

1 个答案:

答案 0 :(得分:2)

因此,您需要一种string dump (当每个char以unicode \uxxxx符号的形式表示时),让我们用一个Linq 的帮助:

using System.Linq;

...

public static string Dump(string value) => value == null
  ? "null" //TODO: put desired representation of null string here
  : "\"" + string.Concat(value.Select(c => $"\\u{((int)c):x4}")) + "\"";

...

public const string Numeric0 = "\u0030";

...

string str = Dump(Numeric0);

Console.WriteLine(str);
Console.WriteLine(Dump("abc 123"));

结果:

"\u0030"
"\u0061\u0062\u0063\u0020\u0031\u0032\u0033"