if variable contains
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
JavaScript: string contains
我有一个postcode变量,希望在更改/输入postcode时使用js将位置添加到另一个变量中。例如,如果输入st6,我希望输入stoke north。
我需要做一个if语句来运行,例如
1 2 3 4 5 6 7 8 | if(code contains ST1) { location = stoke central; } else if(code contains ST2) { location = stoke north; } |
等。。。
我该怎么办?它不检查"code"是否等于一个值,但如果它包含一个值,我认为这是我的问题。
你可能想要
1 2 | if (code.indexOf("ST1") >= 0) { ... } else if (code.indexOf("ST2") >= 0) { ... } |
它检查
你也可以使用
1 2 3 4 5 6 7 8 9 10 11 | switch (true) { case (code.indexOf('ST1') >= 0): document.write('code contains"ST1"'); break; case (code.indexOf('ST2') >= 0): document.write('code contains"ST2"'); break; case (code.indexOf('ST3') >= 0): document.write('code contains"ST3"'); break; }? |
您可以使用regex:
1 | if (/ST1/i.test(code)) |
检查一个字符串是否包含另一个字符串的最快方法是使用
1 2 3 4 5 | if (code.indexOf('ST1') !== -1) { // string code has"ST1" in it } else { // string code does not have"ST1" in it } |
如果您有很多要检查的映射,那么您可能需要存储一个映射列表,并对其进行循环,而不是使用一组if/else语句。类似:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | var CODE_TO_LOCATION = { 'ST1': 'stoke central', 'ST2': 'stoke north', // ... }; function getLocation(text) { for (var code in CODE_TO_LOCATION) { if (text.indexOf(code) != -1) { return CODE_TO_LOCATION[code]; } } return null; } |
这样您就可以轻松地添加更多的代码/位置映射。如果您想处理多个位置,您可以在函数中构建一个位置数组,而不只是返回找到的第一个位置。