将数组项与其他数组项进行比较的高效方法

时间:2015-02-23 13:33:13

标签: c# arrays regex

我正在编写一个程序,我想检查大约100个短语的16,000个字符串 我这样做的简单方法是两个for循环:
(导致1,600,000个字符串操作)

string[] phrases;    
string[] texts;

for(int t_count = 0; t_count < 16000; t_count++)
{
    for(int p_count = 0; p_count < 100; p_count++)
    {
        Regex pattern = new Regex(phrases[p_count]);
        if (pattern.IsMatch(texts[t_count]))
        {
        //Save phrases[p_count]
        break;
        }
    }
}

我认为必须有更有效的方法来做到这一点 欢迎任何建议。

编辑:@ J. Steen 当然它会跑得更快,但同时生产独角兽会很棒!

1 个答案:

答案 0 :(得分:9)

首先切换循环的顺序 - 而不是将100个正则表达式中的每一个编译16000次,这将编译一次:

for(int p_count = 0; p_count < 100; p_count++)
{
    Regex pattern = new Regex(phrases[p_count]);
    for(int t_count = 0; t_count < 16000; t_count++)
    {
        if (pattern.IsMatch(texts[t_count]))
        {
        //Do Something
        }
    }
}