1180

如何在 Ruby 中获取字符串并将其转换为小写或大写?

4

11 回答 11

1697

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!"

有关详细信息,请参阅字符串的文档

于 2009-06-20T00:16:55.487 回答
127

您可以通过打开 irb 并运行来找出字符串上可用的所有方法:

"MyString".methods.sort

特别是对于字符串可用的方法列表:

"MyString".own_methods.sort

我用它来发现关于我可能不知道存在的对象的新的和有趣的事情。

于 2009-06-20T09:27:57.017 回答
41

就像@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 敏感。

于 2013-04-19T05:46:31.580 回答
21

rubydowncase方法返回一个字符串,其大写字母替换为小写字母。

"string".downcase

https://ruby-doc.org/core-2.1.0/String.html#method-i-downcase

于 2009-06-20T00:16:52.787 回答
15

...大写是:

"Awesome String".upcase
=> "AWESOME STRING"
于 2009-06-20T09:10:17.147 回答
14

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  ÁÂÃÀÇÉÊÍÓÔÕÚ"
于 2014-08-01T23:44:24.117 回答
4

.swapcase方法将字符串中的大写字母转换为小写字母,将小写字母转换为大写字母。

'TESTING'.swapcase #=> testing
'testing'.swapcase #=> TESTING
于 2019-05-29T11:26:13.693 回答
2

您可以找到类似的字符串方法"strings".methods 您可以将字符串定义为upcase, downcase, titleize。例如,

"hii".downcase
"hii".titleize
"hii".upcase
于 2019-01-29T12:18:06.567 回答
1

从 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

于 2017-09-18T14:57:42.983 回答
1

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

于 2019-10-23T20:20:11.953 回答
0

结合try方法,支持nil价值:

'string'.try(:upcase)
'string'.try(:capitalize)
'string'.try(:titleize)
于 2020-08-03T08:29:23.277 回答