如果不被其他撇号包围,请替换撇号

时间:2018-08-09 16:51:15

标签: c# string replace

我正在寻找一种查找和搜索字符串中所有'字符的方法。我打算仅在它们没有其他字符之前替换它们。我应该如何解决这个问题而无需输入“ for”循环并在c#中搜索所有字符?

1 个答案:

答案 0 :(得分:1)

这样的事情怎么样。照原样,如果您连续有一个以上的单引号,则会删除其中一个(因此'''变为')。这就是我阅读您的“规格”的方式。

它确实在所有字符之间“循环”-抱歉。在某个时候,无论您使用Replace还是Regex还是自己像这段代码一样进行操作,都会在字符串中逐字符循环。至少在这里,您可以控制它。之所以使用StringBuilder是因为,它是一个字符串构建器(而StringBuilders的运行速度非常快)。

  private string RemoveSingleQuotes(string fromString)
  {
      var buffer = new StringBuilder(fromString.Length);
      const char quote = '\'';
      bool quoteCluster = false;
      foreach (var c in fromString)
      {
          if (c == quote && quoteCluster)
          {
              buffer.Append(c);
          }
          else if (c == quote)
          {
              quoteCluster = true;
          }
          else
          {
              buffer.Append(c);
              quoteCluster = false;
          }
      }
      return buffer.ToString();
  }