替换字符串中的特定重复字符

时间:2019-03-04 16:15:52

标签: c#

我有一个像"aaa\\\\\\\\test.txt"这样的字符串。

如何用单个\\替换所有重复的\\字符?

我尝试过

pPath = new Regex("\\{2,}").Replace(pPath, Path.DirectorySeparatorChar.ToString());

http://regexstorm.net/tester匹配,但在我的程序中似乎不起作用。

我正在Windows上运行此程序,因此Path.DirectorySeparatorChar\\

2 个答案:

答案 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();