Ruby on rails Rails:如何将非英语字符串降格?
如何在RubyonRails3中对非英语字符串进行降格Ruby on rails Rails:如何将非英语字符串降格?,ruby-on-rails,ruby,string,ruby-on-rails-3,lowercase,Ruby On Rails,Ruby,String,Ruby On Rails 3,Lowercase,如何在RubyonRails3中对非英语字符串进行降格 str = "Привет" # Russian puts str[0].ord # => 1055 str.downcase! puts str[0].ord # => 1055 (Should be 1087) 我希望它能在Ruby 1.8.7和Ruby 1.9.2中工作。为什么不使用gemunicode\u utils。此gem将不会强制downcase工作,但是您可以使用: str = "Привет"
str = "Привет" # Russian
puts str[0].ord # => 1055
str.downcase!
puts str[0].ord # => 1055 (Should be 1087)
我希望它能在Ruby 1.8.7和Ruby 1.9.2中工作。为什么不使用gem
unicode\u utils
。此gem将不会强制downcase
工作,但是您可以使用:
str = "Привет"
str.mb_chars.downcase.to_s
#=> "привет"
UnicodeUtils.downcase('Привет') #=> 'привет'
如果您想像这样轻松地使用它:
> "Привет".downcase
=> "привет"
您必须将文件放入initializers文件夹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以来,就有一个内置的。来源:。有关详细信息,请参阅Ruby 2.4.0文档:rails中一个简单的解决方案是将string.rb添加到initializers文件夹中,然后在此文件中,您可以使用mb_字符覆盖字符串,现在支持小写重音符号和字母,如
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
你是说希腊语还是其他任何一种非英语的语言?目前,我对俄语感兴趣,但将来我可能想使用其他语言,因此,我正在寻找一个通用的解决方案。如果没有rails,您需要一个传统的
要求“active\u support/core\u ext”
来避免一个未定义的方法错误,这就是为什么他们没有在ruby 2.0中修复它:(mb_chars
也可以使用大写
和upcase
。这是一个很好的解决方案!我们还可以调用中的'ППцццц.mbцchars.downcase.wrappedцu string
在Ruby 2.4中,它最终可以像预期的那样工作:中的“Пццццццц