我如何把一个字符串转换成Ruby中的小写或大写?


当前回答

... 大写字母是:

"Awesome String".upcase
=> "AWESOME STRING"

其他回答

结合try方法,支持nil值:

'string'.try(:upcase)
'string'.try(:capitalize)
'string'.try(:titleize)

不是每个都适用,但这节省了我很多时间。我只是有一个CSV返回“TRUE或“FALSE”的问题,所以我只是添加了VALUE.to_s。downcase == "true",如果值为"true"则返回布尔值true,如果值为" false "则返回false,但对于布尔值true和false仍然有效。

Rails Active Support gem提供了upcase, downcase, swapcase,capitalize等国际化支持方法:

gem install activesupport
irb -ractive_support/core_ext/string
"STRING  ÁÂÃÀÇÉÊÍÓÔÕÚ".mb_chars.downcase.to_s
 => "string  áâãàçéêíóôõú"
"string  áâãàçéêíóôõú".mb_chars.upcase.to_s
=> "STRING  ÁÂÃÀÇÉÊÍÓÔÕÚ"

从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

就像@endeR提到的,如果国际化是一个问题,unicode_utils gem就足够了。

$ gem install unicode_utils
$ irb
> require 'unicode_utils'
=> true
> UnicodeUtils.downcase("FEN BİLİMLERİ", :tr)
=> "fen bilimleri"

Ruby 2.4中的字符串操作现在是unicode敏感的。