Rubyで大文字・小文字の変換処理をする方法

Rubyで大文字・小文字の変換処理をする方法

Rubyでは、大文字・小文字の変換処理を行うために、文字列クラス(String)にいくつかの便利なメソッドが用意されています。
以下では、代表的なメソッドとその使い方について詳しく説明します。

1. 大文字への変換

Rubyでは、文字列をすべて大文字に変換するためにupcaseメソッドを使用します。
このメソッドは、文字列内のすべての小文字の文字を対応する大文字に変換した新しい文字列を返します。
元の文字列は変更されません。

str = "hello world"
uppercase_str = str.upcase
puts uppercase_str  # 出力: "HELLO WORLD"

upcaseメソッドを使用すると、アルファベット以外の文字(例えば数字や記号)は変更されないため、そのままの形で残ります。

破壊的な変換

もし元の文字列を直接変更したい場合は、upcase!メソッドを使います。
このメソッドは、文字列をその場で変更する(破壊的な)メソッドです。
変更が行われた場合は文字列自身を返し、何も変更されない場合はnilを返します。

str = "hello world"
str.upcase!
puts str  # 出力: "HELLO WORLD"

2. 小文字への変換

すべての文字を小文字に変換するには、downcaseメソッドを使用します。
これはupcaseメソッドの逆の動作を行います。

str = "HELLO WORLD"
lowercase_str = str.downcase
puts lowercase_str  # 出力: "hello world"

同様に、downcase!メソッドを使用すると、元の文字列を直接変更します。

str = "HELLO WORLD"
str.downcase!
puts str  # 出力: "hello world"

3. 大文字と小文字の切り替え

Rubyには、文字列内の大文字と小文字をそれぞれ逆に変換するswapcaseメソッドも用意されています。
このメソッドは、文字列のすべての大文字を小文字に、すべての小文字を大文字に変換します。

str = "Hello World"
swapped_str = str.swapcase
puts swapped_str  # 出力: "hELLO wORLD"

swapcase!メソッドを使用すると、同様に破壊的な変換を行います。

str = "Hello World"
str.swapcase!
puts str  # 出力: "hELLO wORLD"

4. 最初の文字を大文字に変換

文の最初の文字だけを大文字にし、残りの文字を小文字にするには、capitalizeメソッドを使用します。
capitalizeメソッドは、文字列の最初の文字を大文字にし、それ以外のすべての文字を小文字に変換します。

str = "hello WORLD"
capitalized_str = str.capitalize
puts capitalized_str  # 出力: "Hello world"

破壊的に変換するにはcapitalize!メソッドを使用します。

str = "hello WORLD"
str.capitalize!
puts str  # 出力: "Hello world"

5. 各単語の最初の文字を大文字に変換

各単語の最初の文字を大文字にし、残りを小文字にする方法はRubyの標準メソッドにはありませんが、組み合わせて簡単に実現できます。
例えば、splitメソッドとcapitalizeメソッドを組み合わせることで可能です。

str = "hello world from ruby"
titleized_str = str.split.map(&:capitalize).join(' ')
puts titleized_str  # 出力: "Hello World From Ruby"

splitメソッドは文字列をスペースで分割し、mapメソッドは各単語に対してcapitalizeを適用します。
最後にjoinメソッドで単語をスペースで結合します。

6. Unicode文字列の変換

Rubyの文字列メソッドは、デフォルトでUnicodeをサポートしています。
そのため、日本語などの非アルファベット文字が含まれている場合でも、変換メソッドはアルファベット文字にのみ影響を与え、他の文字はそのまま残ります。

str = "こんにちはWORLD"
puts str.upcase   # 出力: "こんにちはWORLD"
puts str.downcase # 出力: "こんにちはworld"

まとめ

Rubyでは、upcase、downcase、swapcase、capitalizeなどのメソッドを使用して、文字列の大文字・小文字の変換を簡単に行うことができます。
これらのメソッドは破壊的または非破壊的に動作するバージョンも用意されており、必要に応じて選択して使用できます。
文字列の操作を効率的に行うために、これらのメソッドを活用してください。