Duplicata possible:
JavaScript: la chaîne contient
J'ai une variable de code postal et je souhaite utiliser JS pour ajouter un emplacement dans une variable différente lorsque le code postal est modifié/saisi. Par exemple, si ST6 est entré, je voudrais que Stoke North soit entré.
J'ai en quelque sorte besoin de faire une instruction if pour exécuter par exemple.
if(code contains ST1)
{
location = stoke central;
}
else if(code contains ST2)
{
location = stoke north;
}
etc...
Comment pourrais-je m'y prendre? Ce n'est pas de vérifier si le "code" est égal à une valeur mais s'il contient une valeur, je pense que c'est mon problème.
Vous voudrez peut-être indexOf
if (code.indexOf("ST1") >= 0) { ... }
else if (code.indexOf("ST2") >= 0) { ... }
Il vérifie si contains
est n'importe où dans la variable string
code
. Cela nécessite que code
soit une chaîne. Si vous voulez que cette solution soit insensible à la casse, vous devez tout de même changer la casse avec String.toLowerCase()
ou String.toUpperCase()
.
Vous pouvez également travailler avec une instruction switch
comme
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;
}
Vous pouvez utiliser une expression régulière:
if (/ST1/i.test(code))
Le moyen le plus rapide de vérifier si une chaîne contient une autre chaîne est d'utiliser 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"; }
Si vous avez beaucoup de ces éléments à vérifier, vous voudrez peut-être stocker une liste des mappages et simplement les parcourir, au lieu d'avoir un tas d'instructions if/else. Quelque chose comme:
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;
}
De cette façon, vous pouvez facilement ajouter plus de mappages de code/emplacement. Et si vous souhaitez gérer plus d'un emplacement, vous pouvez simplement créer un tableau d'emplacements dans la fonction au lieu de simplement renvoyer le premier que vous trouvez.