将字符串文字转换为实际值
注意 :我不想让问题太长,所以问题标题中的“如何”转换为“在.Net框架中是否存在这种方法”。
只是提醒:
\n
如果上面是字符串的可打印表示,那么它的内部版本是一个字符,而不是两个,代码是0x0a。
不过我可以写:
string s = "\\n"; // three characters in editor
转换为2个字符\
和n
内部表示。 这不是0x0a字符!
但我想实现这一目标。 即我已经在字符串中的一些数据,我知道这是一个字符串的可打印表示。 我想将它转换为内部表示(C#编译器一直在做的事情)。
string printable = "\\n"; string internal_ = convert(printable);
internal_
现在只包含一个字符,代码为0x0a。
问题:是否准备好使用 (!)函数进行此类转换?
您可以尝试使用System.Text.RegularExpressions.Regex.Unescape
静态方法:
string internal_ = Regex.Unescape(printable);
但不幸的是它主要适用于正则表达式控制字符。
测试:
var chars = internal_.ToCharArray();
chars
数组有1个元素,代码为0x0a
。
这实际上非常复杂,为了解析字符串文字,还有比你描述的更多需要考虑的情况。 考虑例如\0x0a
。 幸运的是,你不是第一个要求这个的人。 Regex.Unescape
处理大多数情况,但不是所有情况 。 DeepDiver有一个博客文章,其中包含解析C#文字字符串的代码 – 这应该按照您的要求执行。