Search

検索したいワードを入力してください

2019年01月29日

Rubyで文字列を連結する3つの方法をまとめて解説

「Rubyの文字列を連結したい。同じ文字列を何回も入力したくない」この記事では、そういった悩みを抱えている方に、実例を挙げながら文字列の連結方法や、どのメソッドが適切かを説明しています。Rubyの文字列の連結方法を理解したい方は、読んでみてください。

文字列の連結とは

Rubyで文字列の使い方を覚えると、文字列を変数に代入することで色々な場面で呼び出して使うことができ、大変便利です。しかし、文字列入力を色々と試していくと、一方の文字列にさらに別の文字列を繋げることができればさらに便利であることに気づきます。

その一番わかりやすい例が氏名です。名前(フルネーム)には苗字と名前(ファーストネーム)がありますが、相手との関係性やその場の状況によって苗字だけが必要な場面と名前が必要な場面、そしてフルネームが必要な場面があります。

そこで、変数ファーストネームと変数ラストネームを作っておき、この二つを合わせることで、状況に応じてフルネームを作ることができます。その都度フルネームを入力するのでは、手間もかかりますし、何より入力ミスのリスクがあります。

文字列の連結はシンプルで覚えやすいですし、これを覚えると配列の連結にも応用できるので、この機会に覚えておきましょう。

Rubyの文字列の連結方法

Rubyで文字列を連結するためには、concatメソッド、+演算子を使う方法、<<演算子を使う方法の3つがあります。Rubyでは多くのメソッドがありますが、文字列の連結方法はこの3つさえ理解できれば十分ですので、覚えておきましょう。今回説明するメソッドは主に二つの目的によって使い分けられます。

一つ目は、すでにある文字列に対して文字列を加え、さらに長い文字列を作る場合です。具体例としては、すでに作っている文字列nameに対して、敬称「様」を加える場合、すでに作成済みの都道府県名に対して「県」などの表記を付け加える時に使えます。

二つ目は、二つの文字列をつなげて新しい文字列を作る場合です。具体的には、冒頭で説明したように、ファーストネームとラストネームを合わせてフルネームを作る場合が該当します。

実際に例を通してみるとわかりやすいので、これから実際の使い方を説明します。

concatメソッドで文字列を連結する

Rubyですでにある文字列に対して文字列を加え、さらに長い文字列を作りたい場合には、concatメソッドを使用することができます。

すでに顧客リストが作られていると仮定します。対内的には、通常敬称は省いて入力されていることが多いですが、Web上に表示するには失礼に当たる場合があります。その際にconcatメソッドが有効です。

name1 = "山田"
name2 = "田中"
name3 = "鈴木"
honorific = "様"
p name1
#→"山田"
name1.concat(honorific)
p name1
#→"山田様"
greeting = "こんにちは、"
greeting.concat(name1)
p greeting
#→"こんにちは、山田様"

最初に名前をいくつか変数に代入しており、今回はname1の”山田”を使うことで、最終的に挨拶文まで作っています。

次でconcatメソッドの実際の使い方を説明します。

concatメソッドの使い方

上記で、Rubyのconcatメソッドの使用例を見てもらいました。concatメソッドはstring1.concat(string2)で使用可能です。上述例では、string2に文字列が代入されている変数を入れましたが、もちろん直接文字列を入力することも可能です。

prefecture = "秋田"
prefecture.concat("県")
p prefecture
#→"秋田県"


concatメソッドを使う際、注意しなくてはいけないのが、既にある文字列に新たな文字列を加えると、当初の変数が書き換わってしまうということです。concatメソッドの使用後は、name1は"山田様"、prefectureは"秋田県"になってしまうので、不都合が生じます。

最初の例で言うと、たとえ新たに"polite_name"という変数を作り、そこにconcatメソッドを使って代入しても、name1まで変わってしまいます。

+演算子で文字列を連結する

上述したconcatメソッドの問題点を解消するために、Rubyでは+演算子を使うことができます。+演算子は数式の+からイメージがつくように、両隣をつなぎ合わせる役割を持っています。変数first_nameと変数last_nameをつなぎ合わせ、変数full_nameを作る事例を見てみましょう。

first_name = "Taro"
last_name = "Yamada"
full_name = first_name + last_name
p full_name
#→"TaroYamada"
p first_name
#→"Taro"
p last_name
#→"Yamada"

いかがでしょう。実際の利用方法については、次の項目で説明していきます。ここではまず、結合した後もfirst_nameとlast_nameは当初の文字列のままであり、新たに設定したfull_nameでフルネームが作られていること確認してください。

+演算子の使い方

Rubyではstring1+string2とすることで二つの文字列をつなげて、一つの文字列を作ることができることが上記でわかります。

元の文字列が変わらないことがconcatメソッドと異なる点です。また、concatメソッドの例で作った挨拶文も、+演算子を使うことでよりシンプルに読みやすくコーディングすることができます。

name1 = "山田"
name2 = "田中"
name3 = "鈴木"
honorific = "様"
greeting = "こんにちは"
p greeting + name1 + honorific
#→"こんにちは山田様"
p greeting + name2 + honorific
#→"こんにちは田中様"
p greeting + name3 + honorific
#→"こんにちは鈴木様"

このように、コードを見ただけで表示されるものがイメージしやすいです。+を使わずに#{}を使う方法もありますが、まずは+演算子に慣れましょう。

<<演算子で文字列を連結する

ここまで、Rubyではconcatメソッドと+演算子がそれぞれ使う場面が異なることを説明してきました。

+演算子の方がイメージしやすく、スペルミスの心配もないので極力こちらを使いたくなります。しかし、concatメソッドだからできることもあるので、全てを+演算子で対応するわけにもいきません。

そこで、concatメソッドと同様の結果を簡単にもたらすことができるのが<<演算子です。例を見てみましょう。

prefecture = "秋田"
prefecture << "県"
p prefecture

このように、<<という一つの記号を使うだけで"秋田"と"県"をつなげています。+演算子と異なり、演算子使用以降はprefectureには"県"が必ずついて来ることに注意してください。

<<演算子の使い方

Rubyで<<演算子はstring1 << string2として使用することができます。先ほど述べたように、string2が加わったstring1はその先も新たな文字列に変わってしまうことに注意しましょう。

first_name = "Taro"
last_name = "Yamada"
full_name = first_name << last_name
p full_name
#→"TaroYamada"
p first_name
#→"TaroYamada"

いかがですか。変数full_nameだけでなく、first_nameも書き換わっていることがわかります。このような事例では、+演算子を使うのが良いでしょう。

どのメソッドを使うべきか

以上、Rubyで文字列を連結する3つの方法を説明しました。注意点として、concatメソッドと<<演算子は文字列が上書きされる一方で、+演算子では上書きされない点を覚えておきましょう。

また、+演算子の方が使い勝手が良いようにも見えますが、処理速度を測ってみると他のメソッドよりやや遅かったです。今回のような単純な例であれば、目に見えた違いはありませんが、今後コードが複雑化するにつれ、その点も考慮してメソッドを選ぶ必要が出てくるでしょう。

ここで出てきたメソッドは今後、配列など他の場面でも登場するので、ここでしっかり覚えておきましょう。

【PR】多くの人がプログラミングを諦めてしまう理由をご存知ですか?



近年プログラミングを勉強する人が増えています。

プログラミング学習者の多くは独学から取り組もうとしますが、だいたい80%ほどは3ヶ月も続かずに諦めてしまいます。早い人は1日目で。

多くの人がプログラミングを独学しようとして諦める理由は、次の3つ。
●モチベーションが維持できない
●エラーの原因・解決方法が分からない
●どう学習すればよいか分からない

TechBoostというプログラミングスクールでは、みんなと一緒にプログラミングをするのでモチベーションの維持ができ、分からないことがあればマンツーマンで教えてくれ、徹底的に研究された初心者向けの教材が揃っています。

TechBoostを卒業後、実際にエンジニアとして転職した方もいるほど。

本気でプログラミングを学びたい方は、一度無料のカウンセリングでご相談ください。プログラミングを嫌いになる前に。

tech boostについて

オーダーメイド型の学習コンテンツを提供する「tech boost」 は、エンジニアのキャリア支援に特化したサービスを複数展開している株式会社Branding Engineerが運営しているプログラミングスクールです。最短3ヶ月間で、未経験から『プログラミングの基礎』、『実際に業務で必要となるスキル』、『今のトレンドとなっている知識』まで学べ、ご希望の方にはプロのキャリアアドバイザーによる就業支援を行うことができます。

tech boost卒業生インタビュー

tech boostの卒業生の声を聞きました。あなたがプログラミングを学びたい理由を、一度考えてみてください。
営業→Javaエンジニア→Rubyエンジニアと転向し、第一志望のFinTech企業で働く山下さん
元営業、ビジネスのわかるエンジニアを目指す菅原さん
サンフランシスコに交換留学し、シリコンバレーのVCでインターン中の梅本さん
予備校の営業から半年でエンジニア転職を果たした小田島さん

tech boostの口コミ



Related