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