我有一个像"aaa\\\\\\\\test.txt"
这样的字符串。
如何用单个\\
替换所有重复的\\
字符?
我尝试过
pPath = new Regex("\\{2,}").Replace(pPath, Path.DirectorySeparatorChar.ToString());
与http://regexstorm.net/tester匹配,但在我的程序中似乎不起作用。
我正在Windows上运行此程序,因此Path.DirectorySeparatorChar
是\\
。
答案 0 :(得分:2)
使用new Regex(@"\\{2,}")
,其余相同。
您实际上需要在正则表达式中保留反斜杠转义,因此您需要生成一个带有两个反斜杠的字符串。产生正确的C#字符串文字的两种等效技术是@"\\{2,}"
或"\\\\{2,}"
这两个字符串文字都是字符串\\{2,}
,它是正确的正则表达式。您的正则表达式要求一个反斜杠字符出现两次,并且您必须转义反斜杠字符。如果要替换两个a
字符,则可能会产生脚的风险,则可以使用正则表达式a{2,}
,如果要替换为\
字符,则可以使用正则表达式表达式\\{2,}
,因为\\
是与单个\
匹配的正则表达式。像泥一样清澈? :)
答案 1 :(得分:0)
不是正则表达式的半神,我将使用StringBuilder并执行以下操作:
string txt = "";
int count = 0;
StringBuilder bldr = new StringBuilder();
foreach(char c in txt)
{
if (c == '\')
{
count++;
if (count < 3)
{
bldr.Append(c);
}
}
else
{
count = 0;
bldr.Append(c);
}
}
string result = bldr.ToString();