正则表达式查找和替换 C# 中数据表列中的单词列表的最快方法是什么?

What is the fastest way to regex find-and-replace a list of words in a datatable column in C#?

我目前正在使用这种迭代每个源代码行和每个单词替换的方法,有没有更快的方法?

我有要在数据表 'dataSource' 的一列中查找和替换的源文本,以及数据表 'wrData'

的 2 列中的匹配词和替换词
private void function()
{
    //Repeats for every row in dataSource           
    foreach (DataRow drRow in dataSource.Rows)
    {
        //Repeats for every row in WordReplace.csv
        foreach (DataRow wrRow in wrData.Rows)
        {
            string input = drRow["text"].ToString();
            string pattern;
            //Uses regex if not blank
            if (wrRow["source_regex_override"] != null && !string.IsNullOrEmpty(wrRow["source_regex_override"].ToString()))
            {
                pattern = wrRow["source_regex_override"].ToString();
            }
            //Use regex-fied source if regex override is blank
            else
            {
                string wr_source = wrRow["source"].ToString();
                pattern = @"\b" + wr_source + @"\b";
            }
            string replace = wrRow["change_to"].ToString();
            string result = Regex.Replace(input, pattern, replace, RegexOptions.IgnoreCase);
            drRow["text"] = result;
        }
    }
}

我看不出有太大的改进空间。不要访问该列三次,而是访问一次。请注意,wrRow[col_name] 在列集合中进行查找。

string pattern = wrRow["source_regex_override"]?.ToString();
if (String.IsNullOrEmpty(pattern))
{
    string wr_source = wrRow["source"].ToString();
    pattern = @"\b" + wr_source + @"\b";
}

它使用 Null-conditional operators ?..

更好的变量名称 replace(动词):replacement(名词)。