我已经为这个问题挣扎了很长一段时间,谷歌无法提供太多的帮助。我有包含“有效”和“无效”转义序列的字符串,如
str1 = "love\u007c\u000B\n"; // Valid escape sequences
str2 = "title=\x22\t\n"; // Invalid escape sequences. Insufficient hexadecimal digits
str3 = "\love\007c\u000B\n"; // Invalid escape sequences. Unrecognized escape sequences. 当我使用Regex.Unescape(str1);方法时,我得到了我想要的结果,即"love|"。
使用Regex.Unescape(str2);,我得到了一个ArgumentException: Insufficient hexadecimal digits,但实际上我要寻找的是title=\x22。
使用Regex.Unescape(str3);,我得到了一个ArgumentException: Unrecognized escape sequence \l,但实际上我要寻找的是\love|。
我的问题是,如何处理既包含有效转义序列又包含无效转义序列的字符串,使任何无效转义序列都被忽略,而有效序列被替换为相应的字符文字。任何代码片段或链接都会非常有用。
发布于 2014-09-05 19:08:51
在C#中有regular string文字和verbatim string文字。我猜根据您的经验,常规字符串文字并不是预期的表示形式。在引用的字符串之前使用@符号将显示逐字文字类型:
string str1 = @"love\u007c\u000B\n";
string str2 = @"title=\x22\t\n";
string str3 = @"\love\007c\u000B\n";请看一看MSDN上的简短字符串文字解释 --它应该说明文字的不同之处,以及如何/在哪里使用每一种风味。
https://stackoverflow.com/questions/25690471
复制相似问题