50

可能重复:
JavaScript:字符串包含

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

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

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

ETC...

我该怎么办?它不是检查“代码”是否等于一个值,但如果它包含一个值,我认为这是我的问题。

4

5 回答 5

57

你可能想要indexOf

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

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

您还可以使用switch如下语句

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;        
    }​
于 2012-10-22T13:41:23.197 回答
15

您可以使用正则表达式:

if (/ST1/i.test(code))
于 2012-10-22T13:40:40.033 回答
5

检查一个字符串是否包含另一个字符串的最快方法是使用indexOf

if (code.indexOf('ST1') !== -1) {
    // string code has "ST1" in it
} else {
    // string code does not have "ST1" in it
}
于 2012-10-22T13:43:36.583 回答
4

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

于 2012-10-22T13:45:16.410 回答
1

如果您有很多这些要检查,您可能想要存储映射列表并循环遍历它,而不是使用一堆 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;
}

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

于 2012-10-22T14:18:11.073 回答