Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

【Ruby】文字列の連結と補間の基本をコード例付きで解説

Rubyでプログラミングをしていると、複数の文字列を1つにまとめる処理が必要になる場面が頻繁にあります。

では、具体的にはどのような方法があるのでしょうか?

主な方法は2つあります

  1. 文字列の連結(concatenation)
  2. 文字列の補間(interpolation)

+演算子による文字列の連結

連結の基本形は次のとおりです

a = "Nice to meet you"
b = ", "
c = "do you like blueberries?"

a + b + c

# "Nice to meet you, do you like blueberries?"

+演算子を使うと、ある文字列に別の文字列を追加できます。

この例では、a + b + cによって新しい文字列が生成されます。

なお、変数を使わなくても連結は可能です。

puts "I like" + " " + "chocolate"

# I like chocolate

+= 演算子で文字列を追記する

もうひとつの選択肢として、+=演算子を使う方法があります。

a = ""

a += "test"
a += "test"
a += "test"

a
# "testtesttest"

空文字列から始めて、少しずつ文字を追加しながら大きな文字列を作っていくイメージです。

しかし、この方法にはひとつ問題があります…

実はとても遅いのです!

その解決策を次に紹介します。

concatメソッドで効率的に連結する

Rubyのconcatメソッドを使えば、文字列を効率よく結合できます。

使い方はこちら

str = ""

str.concat("a")
str.concat("a")

str
# "aa"

高速な理由は、新しい文字列オブジェクトを毎回生成するのではなく、既存のstrそのものを書き換えるためです。

ただし、+=ほど見た目がすっきりしないのが難点です…

もっと良い方法はないのでしょうか?

あります!

concatのエイリアスである<<メソッドを使えばOKです。

注意:Ruby 2.4以降では微妙な違いがあります。concatは複数の引数を一度に渡せますが、<<は一度に1つの引数しか渡せません。

str = ""

str << "a"
str << "a"

このようにチェーンして書くこともできます

str = ""

str << "a" << "a"

型が違う場合の注意点とto_sメソッド

最後に残る問題がひとつあります。

文字列と変数を組み合わせたいとき、その変数が文字列以外の型だと、予期しない結果になることがあります。

実際に見てみましょう

"" + 1
# TypeError: no implicit conversion of Fixnum into String

"" << 1
# "\x01"

解決策は何でしょうか?

to_sメソッドを使って、対象のオブジェクトを文字列に変換します。

こんな感じです

"" + 1.to_s

もちろん、これを何度も繰り返すとコードが読みにくくなります。そこで登場するのが、次にもっと便利なツールです。

文字列補間(interpolation)の使い方

補間とは、変数を文字列の中に直接埋め込むテクニックで、非常に強力です。

文字列を「テンプレート化」できるのが最大の特徴です。

例を見てみましょう

age  = 33
name = "Jesus"

"Hello, my name is #{name} & I'm #{age} years old."

文字列の前に変数としてnameageを設定しておけば、任意の値を自由に差し込めます。

さらに嬉しいポイントは?

Rubyが自動的にこれらの値を文字列へ変換してくれることです。

つまり、to_sを呼び出す必要はありません!

これは本当に便利ですね。

prependメソッドで先頭に文字列を追加する

文字列を組み合わせる方法は、まだもうひとつあります。

補間で新しい文字列を作ったり、<<concatで末尾に追加したりする代わりに、

prependを使えば文字列の先頭に追加することもできます!

str = ""

str.prepend("1")
str.prepend("2")
str.prepend("3")

# "321"

appendメソッドもあるのでは?」と思った方、残念ながら文字列には存在しません。

appendがあるのは配列だけです。

まとめ

この記事では、Rubyにおける文字列の連結・追記・先頭への追加・補間について学びました。これらのテクニックを使いこなせば、複数の文字列を状況に応じて自由自在に組み合わせることができます。

この記事が役に立ったら、ぜひ周りの方にもシェアしてください🙂

最後までお読みいただきありがとうございました。

  1. Rubyのmapメソッド完全ガイド!配列・ハッシュのデータ変換を実例で解説

    Rubyのmapメソッドは、配列(Array)・ハッシュ(Hash)・範囲(Range)といったコレクションに対して使用できる強力なメソッドです。 mapの主な用途は、データの変換です。 例えば、文字列の配列があった場合、すべての文字列を順番に処理して、各文字を大文字に変換することができます。 また、Userオブジェクトのリストがある場合も同様です。 それらを変換して、対応するメールアドレスや電話番号など、Userクラスに定義された任意の属性のリストを作成できます。 それでは、具体的な使い方を見ていきましょう! Ruby mapメソッドの基本構文 mapの構文は次のようになっています。 a

  2. Rubyでファイルを読み書きする方法を実例つきで徹底解説

    Rubyでファイルの読み書きができるようになると、ファイルからデータを抽出したり、新しいファイルを作成したり、必要な情報を素早く見つけたりできるようになります。この記事では、Rubyにおけるファイル操作の基本を、実際のコード例とともにわかりやすく解説します。 この記事で学べること Rubyでファイルを読み込む方法 Rubyでファイルに書き込む方法 覚えておきたいFileクラスのメソッド ディレクトリ操作の基礎 FileUtilsモジュールの使い方 まとめ それでは始めましょう! Rubyでファイルを読み込む方法 Rubyでファイルを読み込む基本的な流れは、次の3ステップです。 op