用双反斜杠替换反斜杠,正斜杠和双正斜杠

时间:2015-08-19 08:25:12

标签: c# regex string

如果我有以下字符串

"/test\\dso\dsa"

如何使用Regex将其转换为

"\\test\\dso\\dsa"

如果我尝试类似

的话
Regex.Replace (FilePath, @"/|\\", @"\\");

它在中间创建了一个混乱(因为它添加了\\两次,因此添加了\\\\\\\\)。我怎么能让它一次只匹配一个反斜杠?

2 个答案:

答案 0 :(得分:2)

您可以使用以下代码:

var FilePath = @"/test\\dso\dsa";
var myres = Regex.Replace(FilePath, @"[\\/]+", @"\\");

输出:

\\test\\dso\\dsa

正则表达式[\\/]+匹配一个或多个\/字符,然后用两个\符号替换。

@"/|\\"正则表达式的问题在于它逐个匹配每个\/,从而导致比您需要的更多替换。此外,使用单独的符号作为替代方案并不是一个好主意,因为涉及更多的回溯。最佳做法是将它们添加到角色类[...]中。

答案 1 :(得分:1)

你可以试试这个,

Regex.Replace (FilePath, @"/|\\{1,2}", "\\\\");

\\{1,2}将匹配单个或双反斜杠,。

DEMO