1416 votes

Comparaison des chaînes JavaScript insensible à la casse

Comment effectuer une comparaison de chaînes insensible à la casse en JavaScript?

1490voto

SLaks Points 391154

La façon la plus simple de le faire (si vous n'êtes pas inquiet pour les caractères spéciaux Unicode) est d'appeler toUpperCase :

 var areEqual = string1.toUpperCase() === string2.toUpperCase();
 

344voto

Samuel Neff Points 35554

La meilleure façon de faire une comparaison de la casse dans le JavaScript est d'utiliser RegExp méthode match() avec le 'je'.

http://stackoverflow.com/questions/177719/javascript-case-insensitive-search

Lorsque les deux chaînes comparés sont des variables constantes), alors il est un peu plus compliqué parce que vous devez générer une RegExp à partir de la chaîne, mais en passant la chaîne de constructeur RegExp peut entraîner correspondances incorrectes ou échoué matches si la chaîne a des regex caractères.

Si vous vous souciez de l'internationalisation de ne pas utiliser toLowerCase() ou toUpperCase() car elle ne permet pas de garantir la précision de la casse des comparaisons dans toutes les langues.

http://www.i18nguy.com/unicode/turkish-i18n.html

53voto

SP007 Points 639

Avec l'aide de l'expression régulière, nous pouvons également atteindre

(/keyword/i).test (source)

/ i est pour ignorer le cas. Si ce n'est pas nécessaire, nous pouvons ignorer et tester pour ne pas correspondre à la casse comme

(/keyword/).test (source)

34voto

ShitalShah Points 2213

N’oubliez pas que le tubage soit une opération spécifique de paramètres régionaux. Selon le scénario, vous voudrez que prendre compte. Par exemple, si vous comparez les noms de deux personnes, que vous voudrez peut-être locale, mais si vous comparez machine généré des valeurs telles que l’UUID puis vous ne pourriez pas. Ce pourquoi j’utilise la suite de fonction dans ma bibliothèque utils (Notez que la vérification de type n’est pas inclus pour raison de performance).

14voto

Jasen Points 247

si vous êtes inquiet au sujet de la direction de l'inégalité (peut-être que vous voulez trier une liste) vous avez à peu-près à faire cas de conversion, et qu'il y a de plus en minuscules caractères unicode de majuscules toLowerCase est probablement la meilleure conversion à utiliser.

function my_strcasecmp( a, b ) 
{
    if((a+'').toLowerCase() > (b+'').toLowerCase()) return 1  
    if((a+'').toLowerCase() < (b+'').toLowerCase()) return -1
    return 0
}

Javascript semble utiliser la locale "C" pour les comparaisons de chaînes de sorte que le montant de la commande sera moche, si les chaînes contiennent d'autres que l'ASCII des lettres. il n'y a pas beaucoup qui peut être fait à ce sujet sans le faire de façon beaucoup plus détaillée de l'inspection des cordes.

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