我一直在使用.indexOf('') > -1
来检查字符串中是否存在匹配项。我遇到的问题是,当我在多个字符串上执行匹配时,我得到EIFT和EI的字符串匹配(因为EIFT包含EI),因此函数返回true
两句话。我需要的是一种方法,如果字符串是“EIFT”,则只返回function eIft
的true,而EI
则不返回true。
我目前的代码如下,我一直试图想办法解决这个问题但尚未取得任何成功。
function eI(mystring){
return mystring.indexOf("EI") > -1
}
function eIft(mystring){
return mystring.indexOf("EIFT") > -1
}
谢谢!
答案 0 :(得分: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
}
}
答案 1 :(得分:0)
您可以使用===
;这将完全匹配字符串。仅当您检查字符串是否包含另一个字符串时才使用indexOf
。
function eI (mystring) {
return mystring === "EI";
}
function eIFt(mystring) {
return mystring === "EIFT";
}