先日Rubyを使っていて、文字列を変換したい時がありました。
ここでの変換とは、「helloworld」という文字列があったとして、これを「HELLOWORLD」というように大文字や小文字へ書き換えるというようなものです。
Rubyでは、このような変換を簡単に実装できるので紹介します。
はじめに
今回紹介する方法は「Ruby」で動作確認を行っています。
別の言語でも似たような関数で実装できるかと思いますが、正しく動作しない可能性もあるので注意してください。
また、使用しているエディタは「SublimeText」です。
Rubyの場合、ターミナルを使用せずにSublimeTextから実行できるので便利ですよ。
では早速Rubyで文字列を変換させる方法を見ていきましょう。
今回は文字列を「大文字に変換」「小文字に変換」「先頭だけ大文字に変換」「大文字を小文字に変換し小文字を大文字に変換」の4つの方法を紹介します。
大文字に変換
例えば「HelloWorld」という文字列を用意して、この文字列を「HELLOWORLD」に変換させるとしましょう。
このような場合、以下のコードを記述することで簡単に実装できました。
str = "HelloWorld"
p str.upcase
このように、文字列(String)型の「upcase」というメソッドを使うことで、文字列を全て大文字に変換できます。
もちろん短い文字列だけではなく、改行を含んだ以下のような文字列でも実装できます。
str = <<-EOS
HelloWorld
HelloRuby
RubyOnRails
EOS
puts str.upcase
結果は改行を含んだ文字列になり、全て大文字に変換されました。
全て小文字に変換
さて続いて全ての文字列を小文字に変換させてみましょう。
先ほどは「upcase」というメソッドを使用して全ての文字列を大文字にしました。
察しの良い人ならわかるかもしれませんが、文字列を全て小文字に変換するためには「downcase」というメソッドを使用します。
以下を参考にして文字列を全て小文字に変換させてみましょう。
str = "HelloWorld"
p str.downcase
このように記述すると「helloworld」と出力され、「HとW」が小文字に変換されたのがわかるかと思います。
また、こちらのdowncaseも複数行で実装できるので試してみてください。
先頭だけ大文字に変換
英語でテキストを記述していると、「先頭の文字だけは絶対に大文字にする」というような処理が必要になるかもしれません。
そういったときに使用するのは「capitalize」です。
これまでと同じ要領で、文字列「HelloWorld」を変換させてみましょう。
str = "HelloWorld"
p str.capitalize
出力結果が「Helloworld」になっていれば正しく実装できています。
先頭だけを大文字にできましたが、一つ 注意点があるので確認してください。
capitalizeは先頭を大文字にできますが、先ほどのように「複数行」の文字列を変換したとしても、出力結果は「Helloworld」の「先頭」だけです。
二行目以降に記述されていても、それらの先頭文字は小文字(元の状態)のままなので注意してください。
これは
HelloWorld
HelloRuby
RubyOnRails
のように一行で認識されているからかもしれません。
ちなみにこの記事の方法を使えば解決できるかと思います。
大文字を小文字に 小文字を大文字に変換
最後に「大文字を小文字に」「小文字を大文字に」変換する方法です。
記述方法はこれまでと変わりませんが、ここでは「swapcase」というメソッドを使用します。
以下のように記述してみましょう。
str = "HelloWorld"
p str.swapcase
これで「hELLOwORLD」という文字列が出力されたかと思います。
破壊的メソッドが使える
さてここまで紹介してきた「upcase」「downcase」「captalize」「swapcase」ですが、これらには「破壊的メソッド」が使用できます。
破壊的メソッドというのは、メソッドの末尾に「!」をつけることで、値をそのものを書き換える実装方法です。
言葉での説明が難しいので以下のプログラムを確認してみてください。
str = "HelloWorld"
p str
p str.upcase!
p str
一見「HelloWorld」「HELLOWORLD」「HelloWorld」と出力されそうですが、upcaseに「!」が付いていることで、これは破壊的メソッドになりました。
実際に出力される値は、上から「HelloWorld」「HELLOWORLD」「HELLOWORLD」です。
つまり、もともと「HelloWorld」だったstrが「HELLOWORLD」に書き換えられたということですね。このような実装方法が破壊的メソッドになります。
これらは値を書き換えるため、むやみに使用しないほうが良いですが、upcase downcase capitalize swapcaseでも使えるという事だけでも覚えておきましょう。
まとめ
今回紹介したように「upcase」「downcase」「capitalize」「swapcase」を使うことで、文字列を大文字屋小文字に変換させることができました。
このコード単体ではあまり活躍しませんが、デバッグの時に文字列を目立たせたりというような使い方ができるかと思います。
ぜひ試してみてください。
ではまた。