0

可能重复:
我可以将 C# 字符串值转换为转义字符串文字吗

如何实体化任意字符串以获得与调试器类似的精确人类可读视图?即我希望所有特殊字符实体化:

"Hello,\r\nworld"
"Hello,#D$#A$world"
"Hello,0x0D0x0Aworld"

任何这样的输出都可以。我只对 BCL 中的标准函数感兴趣(可能是现有序列化程序或帮助程序类中的一些转义例程,无论如何)。反向功能也很酷。

4

2 回答 2

1

我认为没有现成的解决方案可以满足您的需求。 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
于 2012-06-10T13:09:56.430 回答
0

您可以使用一系列String.Replaces:

string Entitize(string input)
{
    return input.Replace("\n", "\\n").Replace("\r", "\\r"), ... ;

}
于 2012-06-10T10:48:30.907 回答