2014-09-10 61 views
2

我一直在使用​​來檢查字符串中是否存在匹配項。我遇到的問題是,當我在多個字符串上執行匹配時,EIFT和EI的字符串都匹配(因爲EIFT包含EI),所以函數返回兩個句子的true。我需要的是這樣一種方式,如果字符串是「EIFT」,但只有function eIft纔會返回true,但不適用於EI如果字符串包含完全匹配,則使用javascript返回true

我目前的代碼如下,我一直在想辦法解決這個問題,但還沒有成功。

function eI(mystring){ 
    return mystring.indexOf("EI") > -1 
} 

function eIft(mystring){ 
    return mystring.indexOf("EIFT") > -1 
} 

謝謝!

+0

你能澄清什麼是錯的功能'eIft'?如果'myString'包含'EI'而不是'EIFT',它將返回false。 – cybersam 2014-09-10 21:26:56

+0

我不明白。如果它包含'EIFT',那麼它也包含'EI',那爲什麼它不匹配呢?你是說你想要更短的時間?如果是這樣,那麼首先搜索更長的時間。 – 2014-09-10 21:27:00

+0

您是否有理由不回覆澄清請求? – 2014-09-10 21:44:14

回答

0

您可以使用===;這將完成字符串的精確匹配。僅當您檢查字符串是否包含另一個字符串時,才使用indexOf

function eI (mystring) { 
    return mystring === "EI"; 
} 

function eIFt(mystring) { 
    return mystring === "EIFT"; 
} 
1

如果您正在爲您的值在字符串中檢查(如heleilo),那麼你需要確認你的陽性結果爲「EI」檢查:

function eI(mystrng) { 
    return mystring.indexOf("EI") != -1 && !eIFt(mystring); 
} 

這隻會工作,只要它們不都存在於不同的事件中(例如heleileifto)。在這種情況下,你必須檢查眼前以下特點:

function eI(mystring) { 
    var pos = mystring.indexOf("EI"); 

    if (pos != -1) { // found 
     var char1 = mystring[pos + 2]; 
     var char2 = mystring[pos + 3]; 

     return char1 !== 'F' && char2 !== 'T'; 
    } 
} 

OR

function eI(mystring) { 
    var pos = mystring.indexOf("EI"); 

    if (pos != -1) { // found 
     return pos != eIFt(mystring); // they won't have the same index 
    } 
} 
相關問題