在字符串中显示不可打印字符的方法
本文关键字:打印 字符 方法 字符串 显示 | 更新日期: 2023-09-27 18:01:05
有哪些选项可用于将C#字符串中的所有字符(包括不可打印或空白字符(如换行符、制表符等((显示为字符串?
这样做可以使字符串以允许日志查看器查看这些字符的方式注销。
例如,给定字符串:
你好那里再一次
我可以尝试使用"很少使用"的可打印字符,这样结果会看起来像这样:
hello¶there¶·again
或者我可以使用一个我知道不会出现在字符串中的标识符,比如反斜杠:
hello'rthere'r'tagain
我曾考虑过使用类似Regex.Replace
或String.Replace
的东西,但如果不手动指定要映射的每个字符,我就无法"映射"所有空白/不可打印的字符。这真的是最好的选择吗?
一旦定义了要查看的字符,就可以循环使用这些字符,并用等效的数字替换每个不可打印的字符。类似于:
var sb = new StringBuilder();
foreach (char c in s)
{
if (32 <= c && c <= 126)
{
sb.Append(c);
}
else
{
sb.AppendFormat("{{{0}}}", (int)c);
}
}
Console.WriteLine(sb.ToString());
或者更短的一行,尽管我不知道这是否会像大字符串上的StringBuilder
一样好:
// There might be a better LINQ query, but this works:
var result = string.Join(string.Empty,
s.Select(c => (32 <= c && c <= 126)
? c.ToString()
: string.Format("{{{0}}}", (int)c))
.ToArray()
);
不管你做什么,都要记住如果替换的字符/字符串实际上是原始字符串的一部分会发生什么。例如,如果{711}
实际上在源字符串中,那么目标字符串将无法区分占位符和原始字符。