替换(解析" \"在模式结束时非法)

时间:2014-07-09 07:34:15

标签: c#

我有一个C#的迷你程序,所以我在我的程序中执行此操作

wordSearch = "T:\\"
wordReplace = "T:\\Gestion\\"
content = Regex.Replace(content, wordSearch, wordReplace);

但是没有用。错误是:

parsing "T:\" - illegal \ at end of pattern.

有什么想法吗?

[补充]

抱歉!也许我没有解释清楚。所以我再试一次。

我做了一个以字符串形式输入的表单,但是如果这个字符串是" T:\",则程序采用" T:\"。所以,我将这个字符串保存在变量" workShearch"。

此变量用于:

之后
content = Regex.Replace(content, Regex.Escape(wordSearch), Regex.Escape(wordReplace));

但是这一行包含一个错误,因为在这种情况下wordSearch是" T:\",并且该程序会抛出这样的异常:

The error in parsing "T:\" - illegal \ at end of pattern.

谢谢!

3 个答案:

答案 0 :(得分:6)

你应该在模式中逃避\。使用"T:\\\\"verbatim string literal(逐字字符串的优点是不处理转义序列,这使得编写更容易):

var wordSearch = @"T:\\";
var wordReplace = @"T:\Gestion\";

content = Regex.Replace(content, wordSearch, wordReplace);

答案 1 :(得分:1)

再次逃离你的'\'。

wordSearch = "T:\\\\"

更优雅的解决方案是使用字符串前面的@修饰符

wordSearch = @"T:\\"

答案 2 :(得分:1)

\是转义字符,如果您想要\\,则应输入\\\\ 或者将@放在字符串前面,这将认为整个字符串是纯文本

wordSearch = @"T:\\"
wordReplace = @"T:\\Gestion\\"

// or 

wordSearch = "T:\\\\"
wordReplace = "T:\\\\Gestion\\\\"