Je veux apple
et Apple
comparaison d'être true
. Actuellement
"Apple" == "Apple" # returns TRUE
"Apple" == "APPLE" # returns FALSE
ruby
string
string-comparison
Steven
la source
la source
casecmp
: un nom idiot pour une méthode de comparaison sensible à la casse?!== 0
parzero?
"Apple".casecmp("APPLE").zero?
Mais personnellement, j'aime la réponse d'Andres ci-dessous, qui utilise.casecmp?
Dans Ruby 2.4.0, vous avez:
casecmp?(other_str) → true, false, or nil
Ici vous avez plus d'informations
la source
casecmp
fichiers indésirables."aBcDeF".downcase == "abcdef"
place. Beaucoup plus lisible et les gains de performances de l'utilisationcasecmp
sont éliminés dans Ruby 2.4+.false
etnil
pour une API comme celle-ci ...Si vous devez comparer les chaînes UTF-8 en ignorant la casse:
Cela fonctionne de cette façon dans Ruby 2.3.1 et les versions antérieures.
Pour une plus petite empreinte mémoire, vous pouvez choisir
string/multibyte
:Modifier , Ruby 2.4.0:
Cela
casecmp
ne fonctionne donc pas dans 2.4.0; Cependant, dans la version 2.4.0, on peut comparer manuellement les chaînes UTF-8 sansactive_support
gem:la source
casecmp et zéro? sont des méthodes intégrées de rubis. casecmp renvoie 0 si deux chaînes sont égales, insensible à la casse et zéro? vérifie la valeur zéro (== 0)
la source
0
, surtout lorsqu'il est imbriqué avec une condition plus impliquée.Pour ruby 2.4 fonctionne bien casecmp? pour les chaînes utf-8 (mb_chars non nécessaires):
mais casecmp ne fonctionne pas pour utf-8:
la source