Nel caso in cui si devono confrontare stringhe UTF-8 ignorando caso:
>> 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
Funziona in questo modo in Ruby 2.3.1 e versioni precedenti.
Per i più piccoli ingombro di memoria è possibile scegliere ciliegia string/multibyte
:
require 'active_support'
require 'active_support/core_ext/string/multibyte'
Modifica, Ruby 2.4.0:
>> str1.casecmp(str2) == 0
=> false
Quindi casecmp
non funziona in 2.4.0; Tuttavia, in 2.4.0 si può confrontare stringhe UTF-8 manualmente senza active_support
gemma:
>> str1.downcase == str2.downcase
=> true
Questo lavorato fantasticamente: D grazie mille – Steven
Dai miei punti di riferimento casecmp è almeno due volte più veloce del metodo downcase – Jacob
'casecmp': un nome stupido per un caso - * in * -sensibile metodo di confronto ?! – Zabba