循环通过字符串 - 不变性问题

时间:2012-01-04 09:04:37

标签: c# regex string

我需要多次检查和修改一个字符串(搜索和替换不同的seqences)但它运行不正常。我猜它是因为不变性。

private string DoRegexCheck(string line)
{
  string pattern;

  foreach (string re in this.regexPatterns.Items)
  {
    pattern = re;
    Regex r = new Regex(pattern, RegexOptions.IgnoreCase);
    line=r.Replace(line, ""); //the line should be updated and the check should continue with updated line 
  }                            

  return line;
}

1 个答案:

答案 0 :(得分:2)

“效果不佳”有些含糊不清。

如果您的意思是“它没有改变line - 那么该代码就可以了。可变性根本不是问题,因为我们每个{{更新> 字符串变为{ 1}}(显示的代码不会尝试编辑现有的字符串)。如果没有按预期更新,那么Replace模式就不正确了。


如果你的意思是表现:你不能改变Regex对字符串的作用方式;但是,我建议使用Regex选项缓存各种正则表达式,这样就可以重新使用预编译的Compiled数组或字典。如果将此应用于数千Regex s。

,这一点尤为重要