468 votes

Contient des éléments insensibles à la casse

J'ai les éléments suivants :

if (referrer.indexOf("Ral") == -1) { ... }

Ce que j'aime faire, c'est faire Ral insensible à la casse, de sorte qu'il peut être RAl , rAl etc. et correspondent toujours.

Y a-t-il un moyen de dire que Ral doit être insensible à la casse ?

654voto

Rob W Points 125904

Ajouter .toUpperCase() après referrer . Cette méthode transforme la chaîne en une chaîne en majuscules. Ensuite, utilisez .indexOf() en utilisant RAL au lieu de Ral .

if (referrer.toUpperCase().indexOf("RAL") === -1) { 

La même chose peut être réalisée en utilisant une expression régulière (particulièrement utile lorsque vous souhaitez tester des modèles dynamiques) :

if (!/Ral/i.test(referrer)) {
   //    ^i = Ignore case flag for RegExp

100voto

Kfir Erez Points 269

Une autre option consiste à utiliser la méthode de recherche suivante :

if (referrer.search(new RegExp("Ral", "i")) == -1) { ...

Cela semble plus élégant que de convertir toute la chaîne en minuscules et cela peut être plus efficace.
Avec toLowerCase() Le code a deux passages sur la chaîne, un passage sur la chaîne entière pour la convertir en minuscule et un autre pour chercher l'index désiré.
Avec RegExp le code passe une fois sur la chaîne de caractères qu'il cherche à faire correspondre à l'indice désiré.

Par conséquent, sur les longues chaînes de caractères, je recommande d'utiliser la fonction RegExp (je suppose que sur les chaînes courtes, cette efficacité vient du fait de la création de la version RegExp cependant)

21voto

gilly3 Points 33285

Utilisez un RegExp :

if (!/ral/i.test(referrer)) {
    ...
}

Ou bien, utilisez .toLowerCase() :

if (referrer.toLowerCase().indexOf("ral") == -1)

11voto

cheeken Points 9013

Il y a deux approches possibles.

Si vous voulez effectuer une vérification insensible à la casse pour cette seule instance, faites quelque chose comme ce qui suit.

if (referrer.toLowerCase().indexOf("Ral".toLowerCase()) == -1) {
    ...

Alternativement, si vous effectuez cette vérification régulièrement, vous pouvez ajouter un nouveau fichier de type indexOf() -pour String mais ne tenez pas compte de la casse.

String.prototype.indexOfInsensitive = function (s, b) {
    return this.toLowerCase().indexOf(s.toLowerCase(), b);
}

// Then invoke it
if (referrer.indexOfInsensitive("Ral") == -1) { ...

5voto

Kendall Frey Points 19670
if (referrer.toUpperCase().indexOf("RAL") == -1) { ...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X