c#中的转义字符

时间:2014-03-27 13:00:17

标签: c# regex

我在程序中遇到了转义序列。

我从单引号的xml文件中获取输入。

因此在字符串中它可能包含任何转义序列。

所以我想做的是将转义字符后面的下一个字符视为普通字符。

Example: '\abc\\t'
 Output: 'abc\t'

为此,我创建了正则表达式:

Regex.Replace(SearchString, @"\\?(?<Character>)", "${Character}");

但是它取代了所有转义字符并给出了输出:

abct

请帮帮我怎么办?

4 个答案:

答案 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;。

这是你在找什么?