替换(在模式结束时解析“\”非法)
好吧,我有一个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:\”,并且程序会抛出这样的exception:
The error in parsing "T:\" - illegal \ at end of pattern.
谢谢!
你应该在模式中逃脱\
。 使用"T:\\\\"
或逐字字符串文字 ( 逐字字符串的优点是不处理转义序列,这使得编写起来很容易):
var wordSearch = @"T:\\"; var wordReplace = @"T:\Gestion\"; content = Regex.Replace(content, wordSearch, wordReplace);
再次逃离你的’\’。
wordSearch = "T:\\\\"
一个更优雅的解决方案是使用字符串前面的@modifier
wordSearch = @"T:\\"
\
是转义字符,如果你想要\\
,你应该键入\\\\
或将@
放在你的字符串前面,这将考虑整个字符串是纯文本
wordSearch = @"T:\\" wordReplace = @"T:\\Gestion\\" // or wordSearch = "T:\\\\" wordReplace = "T:\\\\Gestion\\\\"