Ruby on Rails 3で英語以外の文字列を小文字にするにはどうすればよいですか?
str = "Привет" # Russian
puts str[0].ord # => 1055
str.downcase!
puts str[0].ord # => 1055 (Should be 1087)
Ruby1.8.7とRuby1.9.2で動作させたい。
Ruby on Rails 3で英語以外の文字列を小文字にするにはどうすればよいですか?
str = "Привет" # Russian
puts str[0].ord # => 1055
str.downcase!
puts str[0].ord # => 1055 (Should be 1087)
Ruby1.8.7とRuby1.9.2で動作させたい。
str = "Привет"
str.mb_chars.downcase.to_s
#=> "привет"
ジェムを使わないのはなぜですかunicode_utils
。このgemは強制的downcase
に機能しませんが、次を使用できます。
UnicodeUtils.downcase('Привет') #=> 'привет'
このように簡単に使用したい場合:
> "Привет".downcase
=> "привет"
イニシャライザフォルダファイルstring.rbに入れる必要があります
require 'unicode'
class String
def downcase
Unicode::downcase(self)
end
def downcase!
self.replace downcase
end
def upcase
Unicode::upcase(self)
end
def upcase!
self.replace upcase
end
def capitalize
Unicode::capitalize(self)
end
def capitalize!
self.replace capitalize
end
end
Ruby 2.4以降、完全なUnicodeケースマッピングが組み込まれています。ソース:https ://stackoverflow.com/a/38016153/888294 。詳細については、Ruby 2.4.0のドキュメントを参照してください:https ://ruby-doc.org/core-2.4.0/String.html#method-i-downcase
railsの便利で簡単な解決策は、string.rbをinitializersフォルダーに追加することです。次に、このファイルでmb_charsを使用してStringをオーバーライドできます。これで、アクセントとÑのような文字が小文字になります。
class String
def downcase
self.mb_chars.downcase.to_s
end
def capitalize
self.mb_chars.capitalize.to_s
end
def upcase
self.mb_chars.upcase.to_s
end
def titleize
self.mb_chars.titleize.to_s
end
end