c#中的转义字符

本文关键字:转义字符 | 更新日期: 2023-09-27 17:54:15

程序中的转义序列卡住了。

我在单引号中从xml文件中获得输入。

所以在string中可以包含任何转义序列

所以我想做的是考虑转义字符后的下一个字符为正常字符。

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

因此我创建了正则表达式,也就是:

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

但是它替换了所有转义字符并给出输出:

abct

请告诉我怎么做?

c#中的转义字符

正则表达式中的命名组不匹配任何内容,因此它的操作与Replace(@"'", "")相同。

匹配组中的一个字符:

SearchString = Regex.Replace(SearchString, @"''(.)", "$1");

基本上,您需要逐个字符解析字符串。伪代码:

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

试试这个:

Regex.Replace(SearchString, @"''(?<Character>[^''])", "${Character}");

如果你喜欢呢:

SearchString = SearchString.Replace(@"''", @"'");

它会给出:

'abc't

这里转义的't现在被视为"制表符"。