如何使JavaScript indexOf()不检测substring

时间:2016-10-06 19:18:24

标签: javascript string indexof

以下是两种具有不同检查条件的条件:

案例1:

if(plan_name.indexOf("T1")>=0 && plan_name.indexOf("FLEX")>=0 && plan_name.indexOf("Non-VAE")>=0) {
    //do something
}

后跟(在相同的代码/程序中)

案例2:

if(plan_name.indexOf("T1")>=0 && plan_name.indexOf("Non-FLEX")>=0 && plan_name.indexOf("Non-VAE")>=0){
    //do something
}

以下是适用上述条件的输入:

计划名称 = iOS 7.7 - RC - T1 - Non-FLEX, Non-VAE

每次CASE 1中的第一个if条件变为有效时,在我的代码中,因为indexOf()正在检测子字符串,而不是我想要代码检测的actual specific字符串(即CASE 2)应该是有效的)。如何在JS中进行这样的特定字符串匹配?

3 个答案:

答案 0 :(得分:1)

一个解决方案是拆分它,看看字符串是否匹配数组

var str = "iOS 7.7 - RC - T1 - Non-FLEX, Non-VAE";
var parts = str.split(/[\s,]/g);
console.log("FLEX", parts.indexOf("FLEX")!==-1);
console.log("Non-FLEX", parts.indexOf("Non-FLEX")!==-1);

答案 1 :(得分:0)

一种选择是重新排序执行流程:

<input type="button" name="submit" value="Submit" onclick="calculateMe()"/>
<img src="~/images/plus.png" alt="operator" id= "operator" onclick="changeIcon()">   

由于第一个条件比第二个条件更严格,第二个条件只会检查第一个条件是否为真。

但是,这只有在没有其他选项的情况下才有效,因为如果你还要查看if(plan_name.indexOf("T1")>=0 && plan_name.indexOf("Non-FLEX")>=0 && plan_name.indexOf("Non-VAE")>=0){ ... } else if(plan_name.indexOf("T1")>=0 && plan_name.indexOf("FLEX")>=0 && plan_name.indexOf("Non-VAE")>=0) { ... } 'VAE',那么也许你应该&#34;标记化&#34;字符串:因为看起来令牌被空格分隔,你可以拆分它,然后查看你需要的每个标记的结果数组。

第三个选项,仍假设令牌用空格分隔,为匹配器添加一个空格:而不是&#39; FLEX&#39;寻找'Non-VAE'' FLEX'

答案 2 :(得分:0)

你的支票应该是这样的

plan_name.indexOf("T1")>=-1

不是这个

plan_name.indexOf("T1")>=0