Цикл через строку - проблема неизменности - PullRequest
1 голос
/ 04 января 2012

Мне нужно, чтобы одна строка проверялась и изменялась много раз (поиск и замена различных последовательностей), но она работает не очень хорошо. Я думаю, это из-за неизменности.

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 Ответ

2 голосов
/ 04 января 2012

«это не работает хорошо» несколько двусмысленно.

Если вы имеете в виду «он не меняется line», то с этим кодом все в порядке. Неизменяемость вообще не проблема, поскольку мы меняем новую строку каждую Replace код, как показано, не пытается редактировать существующую строку.) Если она не обновляется должным образом, то ваши Regex шаблоны просто неверны.


Если вы имеете в виду производительность: вы не можете изменить способ работы Regex со строками; Однако я бы предложил кэшировать различные регулярные выражения, используя опцию Compiled, чтобы у вас был массив или словарь предварительно скомпилированных Regex, которые вы используете повторно. Это особенно важно, если применять это для тысяч line с.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...