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

Rails: How to downcase non-English string?

如何在RubyonRails3中使用非英语字符串?

1
2
3
4
str ="Привет"    # Russian
puts str[0].ord   # => 1055
str.downcase!
puts str[0].ord   # => 1055 (Should be 1087)

我希望它能在Ruby1.8.7和Ruby1.9.2中工作。


1
2
3
str ="Привет"
str.mb_chars.downcase.to_s
#=>"привет"


为什么不使用gem unicode_utils。这个gem不会强迫downcase工作,但是您可以使用:

1
UnicodeUtils.downcase('Привет') #=> 'привет'


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

1
2
>"Привет".downcase
=>"привет"

您必须放入初始值设定项文件夹文件string.rb

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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

由于Ruby2.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