6

検索する単語の配列である文字列があります。

strng = "I have been working here since last six months"
text = ["since", "till", "until"]
result = "since"

配列内のすべての単語を検索したいのですが、文字列でstrng見つかった場合は、結果に割り当てる必要があります。どうやってするの?
単一の単語の検索に使用.search()していますが、複数の単語を検索するにはどうすればよいですか? 助けてください。
私は初心者です。

4

5 に答える 5

11

キーワードの配列をループするか、正規表現を使用できます。前者はシンプルですが、後者はよりエレガントです ;-)

あなたの正規表現は「/since|til|until/」のようなものでなければなりませんが、今のところ 100% 確信が持てません。正規表現を使用する予定がある場合は、正規表現について少し調べてください。

編集:試してみて、記憶をリフレッシュしました。最も簡単な解決策は、search() ではなく .match() を使用することです。それはワンライナーに要約されます:

strng.match(/since|till|until/) // returns ["since"]

.match() を使用すると、パターンのすべての出現を含む配列が得られます。この場合、最初で唯一の一致はその配列の最初の要素です。

于 2013-05-31T06:37:53.957 に答える
3

正規表現はそのための簡単な解決策だと思います。search() の代わりに match() を使用します。

のように書くと、

strng = "I have been working here since last six months"
text = /(since)|(till)|(here)/
result= strng.match(text); // result will have an array [since,since,]

正しい解決策は、

result=strng.match(text)[0];
于 2013-07-22T09:32:28.923 に答える
1

このように各アイテムtextをループできます.search()

for (var i=0; i < text.length; i++)
{
   if (-1 != strng.search(text[i]))
   {
      result = text[i];
      break;
   }
}
于 2013-05-31T06:43:13.883 に答える
0

こうやって…

strng = "I have been working here since last six months";
text = ["since", "till", "until"];
results = [];   // make result as object

     for(var i=0; i<=text.length; i++){
          if(strng.indexOf(text[i]) != -1)
             results.push(text[i]);
     }

indexOf を IE で機能させるには、このコードをスクリプトに入れます。

if (!Array.prototype.indexOf) {

    Array.prototype.indexOf = function(obj, start) {
         for (var i = (start || 0), j = this.length; i < j; i++) {
             if (this[i] === obj) { return i; }
         }
         return -1;
    };

}
于 2013-05-31T07:11:39.820 に答える
0

次のようにできます。

var result;
for(var x = 0; x < text.length; x++){
    if(strng.indexOf(text[x]) > -1){
        result = text[x];
        break;
    }
}
alert(result);

ここでの実例: http://jsfiddle.net/j5Y5d/1/

于 2013-05-31T06:43:48.473 に答える