如果没有被其他撇号包围,则替换撇号



我正在寻找一种查找和搜索字符串中所有 ' 字符的方法。我打算仅在它们不在另一个 ' 字符之前时才替换它们。在不输入循环"for"并搜索 c# 中的所有字符的情况下,我应该如何做到这一点?

这样的事情怎么样。 实际上,如果一行中有多个单引号,则会删除其中一个引号(因此"变为"(。 这就是我阅读您的"规格"的方式。

它确实"循环"了所有字符 - 对不起。 在某些时候,无论您是使用 Replace 还是正则表达式,还是像这段代码一样自己做,某些东西都会逐个字符循环浏览您的字符串。 至少在这里,您可以控制它。 它使用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();
}

最新更新