Rubyで文字列を小文字または大文字に変換する方法


回答:


1590

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を返します。so str = "this" .downcase!str = nilを返します
Phil_Ken_Sebben

12
多くの場合、「bangメソッド」はを返しnilます。別の変数に値を格納する場合ではなく、オブジェクトをインプレースで変更する場合に使用する必要があります。
ソフィーアルパート

6
.titleizeRailsからです。rubyのStringドキュメントでそれを見つけることができません
ronald8192

3
titleizeこの回答から削除するか、少なくともRailsメソッドであることを示す必要があります。
Sagar Pandya 2018

122

irbを開いて実行すると、文字列で使用できるすべてのメソッドを確認できます。

"MyString".methods.sort

そして特に文字列に利用できるメソッドのリストについては:

"MyString".own_methods.sort

私は、これを使用して、他の方法では存在していなかったかもしれないオブジェクトについて新しく興味深いものを見つけます。


12
この回答の唯一の問題は、#own_methodsが存在しないように見えることです。Irb拡張からのものですか?
Mark Wilden、2012

12
こんにちは-私は#own_methodsで何か新しいことを学んでいると思いましたが、それも私には存在しません。ただし、通常は次のようにします:( "MyString" .methods-Object.merhods).sort
Oceanician

2
参照されているパッチ@fakeleftと非常によく似ており、.irbrcファイルにあります。私はモンキーパッチオブジェクトを作成し、これで#own_methdsを作成します:(obj.methods-obj.class.superclass.instance_methods).sort
mlambie

1
@Laser特にStringのメソッドは、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に対応しました。


18

ruby downcaseメソッドは、大文字を小文字に置き換えた文字列を返します。

"string".downcase

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



2
これは技術的には質問への回答には役立ちますが、実際にはもっとわかりやすくなるはずです。おそらく結果を示しますか?多分ドキュメントへのリンク?
ティンマン

12

...そして大文字は:

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

12

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方法は、小文字と大文字に小文字の文字列内の大文字lattersを変換します。

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

1
ありがとう!これはまさに私が探していたものです。大文字と小文字が混在する文字列により、このメソッドの動作がより明確になる場合があります...'Testing'.swapcase #=> tESTING
Matthew


0

すべてのために働くわけではありませんが、これは私にかなりの時間を節約しました。「TRUEまたはFALSE」を返すCSVで問題が発生したため、値が「TRUE」の場合はブール値trueを返し、値が「FALSE」の場合はfalseを返すVALUE.to_s.downcase == "true"を追加しました。 「しかし、ブール値のtrueとfalseでも機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.