2014-09-10 98 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 
    } 
} 
相关问题