可能性のある複製:
JavaScript:文字列を含む
郵便番号変数があり、郵便番号が変更/入力されたときにJSを使用して別の変数に場所を追加したい。たとえば、ST6を入力した場合、ストークノースを入力する必要があります。
私はどうにかしてifステートメントを実行する必要があります.
if(code contains ST1)
{
location = stoke central;
}
else if(code contains ST2)
{
location = stoke north;
}
等...
これについてどうすればいいですか? 「コード」が値に等しいかどうかはチェックしませんが、値が含まれている場合、これが私の問題だと思います。
indexOf
が必要な場合があります
_if (code.indexOf("ST1") >= 0) { ... }
else if (code.indexOf("ST2") >= 0) { ... }
_
contains
がstring
変数code
のどこにあるかをチェックします。これには、code
が文字列である必要があります。このソリューションで大文字と小文字を区別しないようにするには、String.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;
}
_
正規表現を使用できます:
if (/ST1/i.test(code))
文字列に別の文字列が含まれているかどうかを確認する最も速い方法は、 indexOf
を使用することです。
if (code.indexOf('ST1') !== -1) {
// string code has "ST1" in it
} else {
// string code does not have "ST1" in it
}
if (code.indexOf("ST1")>=0) { location = "stoke central"; }
これらの多くを確認する必要がある場合は、多数の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;
}
これにより、コード/場所のマッピングを簡単に追加できます。また、複数の場所を処理する場合は、最初に見つかった場所を返すのではなく、関数に場所の配列を作成するだけで済みます。