【发布时间】:2014-06-13 03:32:25
【问题描述】:
如果这些格式字符出现在两个引号 (") 之间,我有一个正则表达式应该用 ~ 字符替换所有格式字符 (\t, \r\, \n, \v, whitespace)。
我的代码没有产生预期的结果,而是将第一个引号替换为~,然后保留其余部分。 我的正则表达式有什么问题以及如何使它达到我想要的结果?
对于以下字符串:name "Right \r\nCurb"
结果应该是:name "Right~~~Curb"
但我的代码正在生成:name ~Right \r\nCurb"
我的代码:
const string delimeters = "(\"*[\\t\\r\\n\\v\\b\\s]\")";
var openBrkRgx = new Regex(delimeters);
line = openBrkRgx.Replace(line, "~");
【问题讨论】:
-
为什么要对字符类中的项目进行双重转义?
-
@AmalMurali 在 C# 中我认为我必须这样做,因为这些格式字符位于 2 个引号组内(嵌套两次)。也许我不需要?编辑:刚刚检查过,是的,C# 给出了一个带有 1 个转义字符的编译错误。