Если вам нужно сравнить строки UTF-8 без учета регистра:
>> 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
Так работает в Ruby 2.3.1 и более ранних версиях.
Для уменьшения объема памяти вы можете выбрать вишню string/multibyte
:
require 'active_support'
require 'active_support/core_ext/string/multibyte'
Редактировать , Ruby 2.4.0:
>> str1.casecmp(str2) == 0
=> false
Так что casecmp
не работает в 2.4.0; Однако в 2.4.0 можно сравнивать строки UTF-8 вручную без active_support
gem:
>> str1.downcase == str2.downcase
=> true