1

次のテキストがあるとします。

var text = "aaa bbb eee ccc <br>ddd eee fff ggg hhh iii jjj kkk";

検索語は次のとおりです。

var search = "eee ggg";

次のいずれかを知りたい(同等):

a) 検索用語が見つかったテキスト内の位置 (indexOf) を (できれば) 正規表現を通じて知る。この場合、indexOf() は 20 を返す必要があります ( eee fff ggg*の前にもう 1 つのeeeがあることに注意してください)。

また

b) 見つかった用語eee fff gggnewinsertedstring eee fff ggg に置換できること

前もって感謝します

編集行を分割するテキスト変数にいくつかのbrがあるため、すべての検索語を含む行でのみ検索/置換する必要があります。

4

3 に答える 3

1

eee AND ggg を含むパターンがある行を見つけたい

それは別の質問ですが、OKです。

var text = "aaa bbb eee ccc <br>ddd eee fff ggg hhh iii jjj kkk",
    search = "eee ggg";

var lines = text.split("<br>"),
    terms = search.split(" "),
    firstOccurence = new RegExp(terms.join("|"));
function containedIn(l){
    return function(t) { return l.indexOf(t) > -1; }
}

for (var i=0; i<lines.length; i++)
    if (terms.every(containedIn(lines[i]))
        lines[i] = lines[i].replace(firstOccurence, "newinsertedString $&");
var result = lines.join("<br>");
于 2013-08-06T13:03:26.687 に答える