如果我有以下字符串
"/test\\dso\dsa"
如何使用Regex将其转换为
"\\test\\dso\\dsa"
?
如果我尝试类似
的话Regex.Replace (FilePath, @"/|\\", @"\\");
它在中间创建了一个混乱(因为它添加了\\
两次,因此添加了\\\\\\\\
)。我怎么能让它一次只匹配一个反斜杠?
答案 0 :(得分:2)
您可以使用以下代码:
var FilePath = @"/test\\dso\dsa";
var myres = Regex.Replace(FilePath, @"[\\/]+", @"\\");
输出:
\\test\\dso\\dsa
正则表达式[\\/]+
匹配一个或多个\
或/
字符,然后用两个\
符号替换。
@"/|\\"
正则表达式的问题在于它逐个匹配每个\
或/
,从而导致比您需要的更多替换。此外,使用单独的符号作为替代方案并不是一个好主意,因为涉及更多的回溯。最佳做法是将它们添加到角色类[...]
中。
答案 1 :(得分:1)