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


Answers:


1587

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文档


2
我只是在回答后才想到的,但是无论如何我都会花点时间回答给您。谢谢!
Heat Miser

3
小心!在我看来就像在使用爆炸“!” 如果没有大写字母,将返回nil。所以str =“ this” .downcase!返回str = nil
Phil_Ken_Sebben

12
通常,“爆炸方法”会返回nil;如果要就地更改对象,则应使用它们,而不是要将值存储在另一个变量中。
苏菲·阿尔珀特

6
.titleize来自Rails。在ruby String文档中找不到它
ronald8192'4

3
titleize需要从此答案中删除,或者至少说明它是Rails方法。
Sagar Pandya

121

您可以通过打开irb并运行以下命令来找到String上可用的所有方法:

"MyString".methods.sort

并特别列出了可用于字符串的方法:

"MyString".own_methods.sort

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


12
这个答案的唯一问题是#own_methods似乎不存在。是来自Irb扩充功能吗?
Mark Wilden

12
嗨-我以为我当时在学习#own_method的新知识,但对我来说也不存在。但是,我通常会去:(“ MyString” .methods-Object.merhods).sort
大洋洲的2012年

2
与引用的@fakeleft补丁非常相似,我将其保存在.irbrc文件中。我猴子修补对象并使用以下命令创建#own_methds:(obj.methods-obj.class.superclass.instance_methods).sort
mlambie 2013年

1
@Laser特别是String的方法是在String类本身中定义的方法。字符串上可用的方法包括在其超类中定义的方法。
基金莫妮卡的诉讼

1
使用String.public_instance_methods(false)以找到明确定义的所有公有的实例方法String
3limin4t0r

39

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



12

...,大写为:

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

11

Rails的活动支承宝石提供upcasedowncaseswapcasecapitalize,等与国际化支持的方法:

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

1

你可以找到字符串的方法一样"strings".methods 可以定义字符串upcasedowncasetitleize。例如,

"hii".downcase
"hii".titleize
"hii".upcase

1

.swapcase方法变换在字符串中的大写后者为小写和小写字母为大写。

'TESTING'.swapcase #=> testing
'testing'.swapcase #=> TESTING

1
谢谢!这正是我想要的。混合大小写的字符串可能会更清楚地表明此方法的作用……'Testing'.swapcase #=> tESTING
Matthew


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.