En caso de tener que comparar cadenas UTF-8 ignorando mayúsculas y minúsculas:
>> str1 = "Мария"
=> "Мария"
>> str2 = "мария"
=> "мария"
>> str1.casecmp(str2) == 0
=> false
>> require 'active_support/all'
=> true
>> str1.mb_chars.downcase.to_s.casecmp(str2.mb_chars.downcase.to_s) == 0
=> true
funciona de esta manera en Ruby 2.3.1 y versiones anteriores.
Para más pequeña huella de memoria que puede recoger la cereza string/multibyte
:
require 'active_support'
require 'active_support/core_ext/string/multibyte'
Editar, Ruby 2.4.0:
>> str1.casecmp(str2) == 0
=> false
Así casecmp
no funciona en 2.4.0; Sin embargo, en 2.4.0 se puede comparar cadenas UTF-8 de forma manual sin active_support
joya:
>> str1.downcase == str2.downcase
=> true
Esto funcionó fantásticamente: D muchas gracias – Steven
De mis puntos de referencia casecmp es al menos dos veces más rápido que el método downcase – Jacob
'casecmp': un nombre tonto para un caso - * en * - método de comparación sensible ?! – Zabba