1

一致するすべてのキーワードを見つけるために、大量のテキストを解析しようとしています。

配列にすべてのキーワードがあります。

例:

var string = "hi, I need support for apple, android and nokia phones.";

var keywords = ['apple', 'nokia', 'android'];

for(i=0;i<keywords.length; i++){
    var match = string.match(keywords[i]);
    console.log(match);
}

これは今のところ機能しています。より優れた効率的なソリューションを探しているだけです。

4

2 に答える 2

3

@freakish が言ったように、それらを 1 つの正規表現に結合する方が効率的です (まともな正規表現エンジンがあれば)。もちろん、一致が重複しないようにする必要があります。必要な場合は、1 つずつテストする必要があります。

var match = string.match(new RegExp(keywords.join("|"), "g"));
于 2013-06-05T15:02:11.503 に答える
1

一方通行; 大文字と小文字を区別しない、単語全体、重複なし。

var string = "hi, I need support for apple, android and nokia phones.";

var keywords = ['apple', 'nokia', 'android'];
var results = [];
for(var i = 0; i < keywords.length; i++) {
    if ((new RegExp("\\b" + keywords[i] + "\\b", "i").test(string)) {
        results.push(keywords[i]);
    }
}

alert( "contains: " + results );
于 2013-06-05T15:21:58.003 に答える