Rails:如何软件非英文字符串?

Mis*_*hko 37 ruby string ruby-on-rails lowercase ruby-on-rails-3

我怎么能在Ruby on Rails 3中使用非英语字符串?

str = "??????"    # Russian 
puts str[0].ord   # => 1055
str.downcase!
puts str[0].ord   # => 1055 (Should be 1087)
Run Code Online (Sandbox Code Playgroud)

我希望它可以在Ruby 1.8.7以及Ruby 1.9.2中使用.

fl0*_*00r 96

str = "??????"
str.mb_chars.downcase.to_s
#=> "??????"
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你,从过去开始,它在2013年帮助了我!:) (8认同)
  • 如果没有rails,你需要一个附加的`require'active_support/core_ext'来避免_undefined method_-error (5认同)
  • 在Ruby 2.4中,它最终按预期工作:`"Привет".downcase#=>"привет"` (4认同)
  • 真棒,为什么他们没有修复它在红宝石2.0 :( (3认同)

Dev*_*per 7

为什么不使用宝石unicode_utils.这个宝石不会强制downcase工作,但你可以使用:

UnicodeUtils.downcase('??????') #=> '??????'
Run Code Online (Sandbox Code Playgroud)


Dim*_*nik 6

如果你想像这样轻松使用它:

> "??????".downcase
=> "??????"
Run Code Online (Sandbox Code Playgroud)

你必须把初始化文件夹文件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
Run Code Online (Sandbox Code Playgroud)