如果变量包含

时间:2012-10-22 13:39:30

标签: javascript variables if-statement

  

可能重复:
  JavaScript: string contains

我有一个邮政编码变量,想要在更改/输入邮政编码时使用JS将位置添加到另一个变量中。因此,例如,如果输入ST6,我希望输入Stoke North。

我不知何故需要做一个if语句来运行例如。

if(code contains ST1)
{
    location = stoke central;
}
else if(code contains ST2)
{
    location = stoke north;
} 

等...

我该怎么做?它不会检查'code'是否等于某个值,但如果它包含一个值,我认为这是我的问题。

5 个答案:

答案 0 :(得分:39)

您可能需要indexOf

if (code.indexOf("ST1") >= 0) { ... }
else if (code.indexOf("ST2") >= 0) { ... }

它会检查contains变量string中的code是否在任何位置。这需要code为字符串。如果您希望此解决方案不区分大小写,则必须使用String.toLowerCase()String.toUpperCase()将大小写更改为完全相同。

您还可以使用{/ 1}}语句,例如

switch

答案 1 :(得分:11)

您可以使用正则表达式:

if (/ST1/i.test(code))

答案 2 :(得分:2)

检查字符串是否包含其他字符串的最快方法是使用indexOf

if (code.indexOf('ST1') !== -1) {
    // string code has "ST1" in it
} else {
    // string code does not have "ST1" in it
}

答案 3 :(得分:2)

if (code.indexOf("ST1")>=0) { location = "stoke central"; }

答案 4 :(得分:0)

如果你有很多这些需要检查,你可能想要存储映射列表并只是循环它,而不是有一堆if / else语句。类似的东西:

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;
}

通过这种方式,您可以轻松添加更多代码/位置映射。如果你想处理多个位置,你可以在函数中建立一个位置数组,而不是只返回你找到的第一个位置。