题 如何在Ruby中将字符串转换为小写或大写


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


974
2018-06-20 00:16


起源




答案:


Ruby有一些方法可以改变字符串的大小写。要转换为小写,请使用 downcase

"hello James!".downcase    #=> "hello james!"

同样的, upcase 每个字母都有大写字母 capitalize 将字符串的第一个字母大写,但将其余字母缩小:

"hello James!".upcase      #=> "HELLO JAMES!"
"hello James!".capitalize  #=> "Hello james!"
"hello James!".titleize    #=> "Hello James!"

如果要在适当的位置修改字符串,可以为这些方法中的任何一个添加感叹号:

string = "hello James!"
string.downcase!
string   #=> "hello james!"

参考 String的文档 了解更多信息。


1411
2018-06-20 00:16



在我回答之后我才考虑过这个问题,但无论如何我都会花时间来回答它。谢谢! - Heat Miser
小心!在我看来就像使用爆炸“!”如果没有大写字母,则返回nil。所以str =“this”.downcase!返回str = nil - Phil_Ken_Sebben
通常,“爆炸方法”会回归 nil;如果要更改对象,则应使用它们,而不是要将值存储在另一个变量中。 - Sophie Alpert
.titleize 来自Rails。在红宝石中找不到它 String 文件 - ronald8192
titleize 需要从此答案中删除或至少声明它是一个Rails方法。 - Sagar Pandya


您可以通过打开irb并运行以查找String上可用的所有方法:

"MyString".methods.sort

有关特定字符串可用方法的列表:

"MyString".own_methods.sort

我用这个来找出关于物体的新的和有趣的东西,我可能不会知道它们存在。


114
2018-06-20 09:27



这个答案的唯一问题是#own_methods似乎不存在。它来自Irb扩展吗? - Mark Wilden
嗨 - 我以为我正在学习#own_methods的新东西,但它对我来说也不存在。但是,我通常会:(“MyString”.methods - Object.merhods).sort - oceanician
同上。 @mlambie可能有类似的东西 这个猴子补丁 在某个地方设立。 - fakeleft
非常类似于引用的补丁@fakeleft,我在我的.irbrc文件中有它。我用它修改对象并创建#own_methds:(obj.methods - obj.class.superclass.instance_methods).sort - mlambie
@Laser String的方法特别是String类本身定义的方法。 String上可用的方法包括在其超类中定义的方法。 - Nic Hartley


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


36
2018-04-19 05:46





红宝石 downcase method返回一个字符串,其大写字母由小写字母替换。

"string".downcase

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


14
2018-06-20 00:16



我找到了答案,但它花了我太长时间,这里更好...... - Heat Miser
红宝石转换在这里: techotopia.com/index.php/Ruby_String_Conversions - TStamper
虽然从技术上讲这确实有助于回答这个问题,但它确实应该更有启发性。或许显示结果?也许是文档的链接? - the Tin Man


......大写是:

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

11
2018-06-20 09:10





Rails Active Support gem提供 upcasedowncaseswapcasecapitalize等国际化支持的方法:

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

11
2017-08-01 23:44





从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


0
2017-09-18 14:57