可能重复:
我可以将 C# 字符串值转换为转义字符串文字吗
如何实体化任意字符串以获得与调试器类似的精确人类可读视图?即我希望所有特殊字符实体化:
"Hello,\r\nworld"
"Hello,#D$#A$world"
"Hello,0x0D0x0Aworld"
任何这样的输出都可以。我只对 BCL 中的标准函数感兴趣(可能是现有序列化程序或帮助程序类中的一些转义例程,无论如何)。反向功能也很酷。
我认为没有现成的解决方案可以满足您的需求。
Char.Isxxx
可用于查找需要特殊处理的字符,自定义代码可以将它们替换为您想要查看的信息。
下面的代码适用于示例,但 Unicode 中有许多不同的字符,以确保它涵盖所有情况。
var s = @"Hello,
world";
var builder = new StringBuilder();
foreach (var c in s)
{
if (Char.IsLetterOrDigit(c) || Char.IsPunctuation(c))
builder.Append(c);
else
{
var newStr = string.Format("#{0}$", ((int)c).ToString("X"));
builder.Append(newStr);
}
}
Console.WriteLine(builder.ToString());
结果显示在控制台中:
Hello,#D$#A$world
您可以使用一系列String.Replace
s:
string Entitize(string input)
{
return input.Replace("\n", "\\n").Replace("\r", "\\r"), ... ;
}