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。很抱歉,这个问题可能让人困惑。