将字符串文字转换为实际值

注意 :我不想让问题太长,所以问题标题中的“如何”转换为“在.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#文字字符串的代码 – 这应该按照您的要求执行。