我在程序中遇到了转义序列。
我从单引号的xml文件中获取输入。
因此在字符串中它可能包含任何转义序列。
所以我想做的是将转义字符后面的下一个字符视为普通字符。
Example: '\abc\\t'
Output: 'abc\t'
为此,我创建了正则表达式:
Regex.Replace(SearchString, @"\\?(?<Character>)", "${Character}");
但是它取代了所有转义字符并给出了输出:
abct
请帮帮我怎么办?
答案 0 :(得分:1)
正则表达式中的命名组不匹配任何内容,因此它与Replace(@"\", "")
完全相同。
匹配组中的一个字符:
SearchString = Regex.Replace(SearchString, @"\\(.)", "$1");
答案 1 :(得分:0)
试试这个:
Regex.Replace(SearchString, @"\\(?<Character>[^\\])", "${Character}");
答案 2 :(得分:0)
基本上,您需要逐个字符地解析字符串。伪代码:
Loop through all characters c:
If c is escape character:
Read next character and do something special (\t is tab, \\ is backslash, ...)
Else:
Copy character to output
答案 3 :(得分:0)
如果您喜欢,该怎么办?
SearchString = SearchString.Replace(@"\\", @"\");
它会给:
\abc\t
此处转义\t
现在被视为&#34;标签字符&#34;。
这是你在找什么?