我一直在努力解决这个问题已经有一段时间了,谷歌搜索无法提供太多帮助。我的字符串包含“有效”和“无效”转义序列,如此,
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|
。
我的问题是,如何处理包含有效和无效转义序列的字符串,以便在有效序列被适当的字符文字替换时忽略任何无效的转义序列。任何代码片段或链接都非常有用。
答案 0 :(得分:0)
在C#
regular string
个文字和verbatim string
文字中。我猜你的经验是常规字符串文字不是预期的表示。在引用的字符串之前使用@
符号为您提供逐字文字类型:
string str1 = @"love\u007c\u000B\n";
string str2 = @"title=\x22\t\n";
string str3 = @"\love\007c\u000B\n";
看看MSDN上的简短String Literals explanation - 它应该对文字的明显差异以及如何/在何处使用每种风味有所了解。