【发布时间】:2010-11-04 11:15:05
【问题描述】:
如何在 Ruby 中获取字符串并将其转换为小写或大写?
【问题讨论】:
标签: ruby string uppercase lowercase
如何在 Ruby 中获取字符串并将其转换为小写或大写?
【问题讨论】:
标签: ruby string uppercase lowercase
Ruby 有一些方法可以改变字符串的大小写。要转换为小写,请使用downcase:
"hello James!".downcase #=> "hello james!"
类似地,upcase 将每个字母大写,capitalize 将字符串的第一个字母大写,其余字母小写:
"hello James!".upcase #=> "HELLO JAMES!"
"hello James!".capitalize #=> "Hello james!"
"hello James!".titleize #=> "Hello James!" (Rails/ActiveSupport only)
如果你想就地修改字符串,你可以在这些方法中添加一个感叹号:
string = "hello James!"
string.downcase!
string #=> "hello james!"
有关详细信息,请参阅documentation for String。
【讨论】:
nil;如果你想改变一个对象,你应该使用它们,而不是如果你想将值存储在另一个变量中。
.titleize 来自 Rails。在 ruby String 文档中找不到它
titleize 需要从此答案中删除,或者至少声明它是 Rails 方法。
结合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。
【讨论】:
.swapcase 方法将字符串中的大写字母转换为小写,将小写字母转换为大写。
'TESTING'.swapcase #=> testing
'testing'.swapcase #=> TESTING
【讨论】:
'Testing'.swapcase #=> tESTING
你可以找到像"strings".methods这样的字符串方法
您可以将字符串定义为upcase、downcase、titleize。
例如,
"hii".downcase
"hii".titleize
"hii".upcase
【讨论】:
ruby downcase 方法返回一个字符串,其大写字母替换为小写字母。
"string".downcase
https://ruby-doc.org/core-2.1.0/String.html#method-i-downcase
【讨论】:
从 Ruby 2.4 开始,有一个内置的 full Unicode case mapping。来源: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 敏感。
【讨论】:
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 ÁÂÃÀÇÉÊÍÓÔÕÚ"
【讨论】:
您可以通过打开 irb 并运行来找出 String 上所有可用的方法:
"MyString".methods.sort
特别是可用于字符串的方法列表:
"MyString".own_methods.sort
我用它来发现关于我可能不知道存在的对象的新的和有趣的事情。
【讨论】:
String.public_instance_methods(false)查找String明确定义的所有公共实例方法。
...大写是:
"Awesome String".upcase
=> "AWESOME STRING"
【讨论】: