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

时间:2014-10-27 14:27:31

标签: c# string

注意:我不想让问题太长,所以"怎么"从问题标题转换为"在.Net框架中是否有这种方法"。

提醒一下:

\n

如果上面是字符串的可打印表示,那么它的内部版本是一个字符,而不是两个,代码是0x0a。

但我可以写:

string s = "\\n"; // three characters in editor

转换为2个字符\n的内部表示形式。这不是0x0a字符!

但我想实现这一目标。即我已经在字符串中输入了一些数据,我知道这是一个字符串的可打印表示。我想将它转换为内部表示(C#编译器一直在做的事情)。

string printable = "\\n";
string internal_ = convert(printable);

internal_现在只能包含一个字符,代码为0x0a。

问题:是否准备好使用(!)功能进行此类转换?

2 个答案:

答案 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#文字字符串 - 这应该按照您的要求执行。