2013-05-31 45 views
2

我有一個字符串,文字的數組中搜索:如何使用java腳本搜索字符串中的多個文本?

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

我想搜索在陣列的每一個字,在strng和時任它在strng被發現,它必須被分配導致。怎麼做?
我使用.search()搜索單個單詞,但如何搜索多個單詞?請幫忙。
我是新手。

回答

3

您可以循環使用關鍵字數組或使用正則表達式。前者很簡單,後者更優雅;-)

你的正則表達式應該是「/ since | until | until /」,但我現在不是100%確定。你應該研究一下關於正則表達式,如果你打算使用它們,這裏是一個起動器:http://www.w3schools.com/js/js_obj_regexp.asp

編輯:只是試過了,刷新了我的記憶。最簡單的解決方案是使用.match(),而不是search()。它歸結爲一個班輪然後:

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

使用.match()讓你與你的所有匹配模式的數組,在這種情況下,第一個也是唯一匹配該數組的第一個元素。

1

您可以通過與.search()text每個項循環這樣

for (var i=0; i < text.length; i++) 
{ 
    if (-1 != strng.search(text[i])) 
    { 
     result = text[i]; 
     break; 
    } 
} 
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/

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; 
    }; 

} 
1

我覺得正則表達式是對於簡單的解決方案。 使用match()而不是search()。

,如果你把它寫成,

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]; 
相關問題