50

重複の可能性:
JavaScript: string contains

郵便番号変数があり、郵便番号が変更/入力されたときに、JS を使用して場所を別の変数に追加したいと考えています。たとえば、ST6 に入った場合、Stoke North に入ってもらいたいと思います。

私はどういうわけか実行するためにifステートメントを実行する必要があります。

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

等...

これについてどうすればいいですか?「コード」が値と等しいかどうかをチェックしていませんが、値が含まれている場合、これは私の問題だと思います。

4

5 に答える 5

57

あなたが望むかもしれませんindexOf

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

変数containsのどこかにあるかどうかをチェックします。これは文字列である必要があります。このソリューションで大文字と小文字を区別しないようにする場合は、またはのいずれかで大文字と小文字をすべて同じに変更する必要があります。stringcodecodeString.toLowerCase()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 に答える