How to convert a string to lower or upper case in Ruby
如何在Ruby中将字符串转换为小写或大写?
Ruby有几种方法可以改变字符串的大小写。要转换为小写,请使用downcase:
1
| "hello James!".downcase #=>"hello james!" |
类似地,upcase将每个字母大写,capitalize将字符串的第一个字母大写,但其余字母的值较低:
1 2 3
| "hello James!".upcase #=>"HELLO JAMES!"
"hello James!".capitalize #=>"Hello james!"
"hello James!".titleize #=>"Hello James!" |
如果要就地修改字符串,可以向以下任何方法添加感叹号:
1 2 3
| string ="hello James!"
string.downcase!
string #=>"hello james!" |
有关详细信息,请参阅文档中的字符串。
- 我只是在回答完之后才想起来的,但我还是相信你会花时间回答的。谢谢!
- 当心!在我看来就像是用了砰的一声"!"如果没有大写字母,将返回零。所以str="this".坏了!返回str=nil
- 通常,"bang方法"返回nil;如果要在适当的位置更改对象,则应使用这些方法,而不是如果要将值存储在另一个变量中。
- 但是,如果您使用的是UTF-8,那么在"i"字符中这是一个问题。例如,string=fen b?L?MLER?.string.capitalize必须是"fen b"?L?梅勒?"或者它可能会因为CSS字体样式的选择而改变。
- 当然,Ruby不能像其他语言那样使用标准的to upper或to lower!:)
- 向上和向下的声音,就像它们在字符上操作一样,而不是作为字符串上的方法。我觉得很顺。
- 也总是有.titleize,以防您想大写字符串中的每个单词。"gone with the wind".titleize #=>"Gone With The Wind"。我只是想把它扔进去。
- 'coração'.upcase产生'CORAçãO'。建议使用一些gem,如"unicode-utils"、"activesupport"或"unicode"。
- 对于这样一个表达式:#{node.environment},那么upcase放在括号内,就像这样:#{node.environment.upcase}。
- .titleize来自轨道。在Ruby String文档中找不到它
- titleize需要从这个答案中删除,或者至少声明它是一个rails方法。
通过打开IRB并运行以下命令,可以找到字符串上所有可用的方法:
尤其是对于字符串可用的方法列表:
1
| "MyString".own_methods.sort |
我用这个发现一些新的和有趣的关于我可能不知道存在的物体的事情。
- 这个答案的唯一问题是,自己的方法似乎不存在。是从IRB分机来的吗?
- 嗨-我当时以为我在学习一些新的方法,但它也不存在。但是,我通常会去:("mystring".methods-object.merhods).sort
- 同上。@姆兰比可能在某个地方设置了类似猴子补丁的东西。
- 非常类似于引用的补丁@fakeleft,我的.irbrc文件中有它。我猴修补对象并创建自己的方法:(obj.methods-obj.class.superclass.instance-methods).sort
- 对own_methods投赞成票
- "字符串上的所有可用方法"和"特别是字符串的可用方法"有什么区别?它们似乎是同义的。当然没什么特别的,因为自己的方法似乎是我没有的扩展,但是我仍然很好奇。
- @激光——尤其是字符串的方法是字符串类本身定义的方法。字符串上可用的方法包括在其超类中定义的方法。
- @qpaystaxes明白了,谢谢。你知道为什么IRB Ruby 2.1.4中没有自己的方法吗?在字符串类中,默认情况下是否没有方法,所以如果我手动添加了一些方法,就可以了?如果我想的话,你知道在Rails应用程序中哪里可以找到基本的Ruby类,比如字符串吗?谢谢
- @根据Fakeleft的评论,激光很好,它可能是一个猴子补丁或者什么的。这不是真正的延伸。我不知道在哪里可以找到Rails安装中的定义;大概和Ruby安装在同一个地方。问题是它可能在C中,所以除非你能读C,否则你就不能读源文件。
就像@ender提到的,如果国际化是一个问题,那么unicode-utils gem就足够了。
1 2 3 4 5 6
| $ gem install unicode_utils
$ irb
> require 'unicode_utils'
=> true
> UnicodeUtils.downcase("FEN B?L?MLER?", :tr)
=>"fen bilimleri" |
Ruby2.4中的字符串操作现在对Unicode敏感。
ruby downcase方法返回一个字符串,其大写字母替换为小写字母。
https://ruby doc.org/core-2.1.0/string.html method-i-downcase
- 我找到了答案,但花了我太久的时间,这里更好…
- Ruby转换:techotopia.com/index.php/ruby_string_转换
- 虽然从技术上讲这确实有助于回答这个问题,但它确实应该更具启发性。是否显示结果?可能是文档的链接?
…大写是:
1 2
| "Awesome String".upcase
=>"AWESOME STRING" |
Rails Active Support Gem为upcase、downcase、swapcase、capitalize等提供国际化支持的方法:
1 2 3 4 5 6
| gem install activesupport
irb -ractive_support/core_ext/string
"STRING á??à?éêíó??ú".mb_chars.downcase.to_s
=>"string áa?à?éêíó??ú"
"string áa?à?éêíó??ú".mb_chars.upcase.to_s
=>"STRING á??à?éêíó??ú" |
你可以找到像"strings".methods这样的字符串方法。可以将字符串定义为upcase、downcase、titleize。例如,
1 2 3
| "hii".downcase
"hii".titleize
"hii".upcase |
因为Ruby2.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