C# 对任意.NET字符串进行实体化
可能重复:C# 对任意.NET字符串进行实体化,c#,.net,string,.net-4.0,escaping,C#,.net,String,.net 4.0,Escaping,可能重复: 如何对任意字符串进行实体化,以获得与调试器类似的人类可读视图?也就是说,我希望所有特殊字符都被实体化: "Hello,\r\nworld" "Hello,#D$#A$world" "Hello,0x0D0x0Aworld" 任何这样的输出都可以。我只对BCL中的标准函数感兴趣(可能是现有序列化程序或助手类中的一些转义例程,等等)。反转功能也很酷。您可以使用一系列字符串。替换s: string Entitize(string input) { return input.Re
如何对任意字符串进行实体化,以获得与调试器类似的人类可读视图?也就是说,我希望所有特殊字符都被实体化:
"Hello,\r\nworld"
"Hello,#D$#A$world"
"Hello,0x0D0x0Aworld"
任何这样的输出都可以。我只对BCL中的标准函数感兴趣(可能是现有序列化程序或助手类中的一些转义例程,等等)。反转功能也很酷。您可以使用一系列
字符串。替换s:
string Entitize(string input)
{
return input.Replace("\n", "\\n").Replace("\r", "\\r"), ... ;
}
我不认为有现成的解决方案可以满足您的需求。
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
“实体化”是什么意思?您希望输出是什么?请参阅输出示例。我想获得一个视图,这样我就可以确定字符串中的每个字符(甚至是不可打印的)。记录时需要这个。你说的“特殊字符”是什么意思?您将在其中查看哪些需要转义的日志?”\n“在运行时不存在,它将是换行符。谢谢,lesderid!正是我需要的。HttpUtility.JavaScriptStringEncode()完成了这项工作,但需要System.Web。很抱歉,这个问题可能让人困惑。