Comment effectuer une comparaison de chaînes insensible à la casse en JavaScript?
Réponses
Trop de publicités?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.
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).
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.