У меня есть таблица данных, содержащая два столбца (шаблон и новый порядок) и приблизительно 100 строк (все с различными шаблонами).
То, что я делаю, это сопоставление входной строки с шаблоном (сгруппированные совпадения), и если совпадение происходит, я хочу переставить найденные группы с помощью команды Regex.Replace.
Дело в том, что Regex не действует очень дружелюбно при использовании внутри цикла. Поскольку я должен сопоставить входную строку с более чем одним шаблоном и изменить внешний вид выходной строки, единственный способ выполнить эту задачу - использовать класс Regex. Но это не похоже на правильное решение, поскольку оно значительно снижает производительность.
Код выглядит так
DataTable dt = this.GetPatterns();
DataRow dr;
System.Collections.IEnumerator ie = dt.Rows.GetEnumerator();
while(ie.MoveNext() && !found)
{
dr = ((DataRow)ie.Current);
pattern = dr["pattern"].ToString();
neworder= dr["neworder"].ToString();
Regex reg = new Regex(pattern, RegexOptions.IgnoreCase);
Match match = reg.Match(input_string);
if (match.Success)
{
found = true;
output = reg.Replace(input_string, neworder);
}
}