Rubyのjoinと配列変換を完全解説!文字列⇔配列の相互変換レシピ集
生徒
「Rubyで文字列と配列を行き来させる方法ってありますか?」
先生
「ありますよ。文字列を配列に変換したり、配列を文字列にまとめることができます。」
生徒
「具体的にはどのメソッドを使うんですか?」
先生
「Rubyではsplitやcharsで文字列を配列に変換し、joinで配列を文字列にまとめます。順番に見ていきましょう!」
1. 配列を文字列に変換するjoinメソッドとは
Rubyのjoinメソッドは、配列に入っている複数の要素を一つの文字列にまとめるためのメソッドです。例えば、配列の要素が["りんご", "みかん", "バナナ"]の場合、joinを使うことで「りんごみかんバナナ」と1つの文字列に変換できます。
fruits = ["りんご", "みかん", "バナナ"]
puts fruits.join
puts fruits.join(", ") # カンマとスペースで区切る
りんごみかんバナナ
りんご, みかん, バナナ
2. 文字列を配列に変換するsplitメソッド
文字列を配列に変換したい場合は、splitメソッドを使います。splitは文字列を特定の区切り文字で分割して配列にしてくれます。例えば、カンマ区切りの文字列を配列にしたいときに便利です。
fruits_string = "りんご,みかん,バナナ"
fruits_array = fruits_string.split(",")
p fruits_array
["りんご", "みかん", "バナナ"]
splitの引数を省略すると、デフォルトで空白文字(スペース、タブ、改行)で分割されます。
3. 文字列を1文字ずつ配列にするcharsメソッド
文字列を1文字ずつ配列に変換したい場合は、charsメソッドを使います。たとえば「Ruby」を文字ごとに配列にする場合です。
word = "Ruby"
letters = word.chars
p letters
["R", "u", "b", "y"]
これをjoinで再び文字列に戻すことも可能です。
puts letters.join
Ruby
4. 配列の要素を結合する便利なテクニック
配列に含まれる数値やオブジェクトもjoinで文字列にできます。ただし、文字列でない場合はto_sメソッドで変換する必要があります。
numbers = [1, 2, 3, 4]
puts numbers.join("-")
mixed = [1, "りんご", 3.14]
puts mixed.map(&:to_s).join(", ")
1-2-3-4
1, りんご, 3.14
map(&:to_s)は配列の全要素を文字列に変換する便利な書き方です。
5. splitとjoinを組み合わせた文字列加工
splitで文字列を配列に変換し、配列を加工してjoinで戻すことで、文字列の置換やフォーマット変更が簡単にできます。
sentence = "Ruby,Python,JavaScript"
languages = sentence.split(",")
languages.map!(&:upcase) # 全て大文字に変換
new_sentence = languages.join(" | ")
puts new_sentence
RUBY | PYTHON | JAVASCRIPT
このように配列に一旦変換することで、文字列操作が格段に便利になります。
6. 初心者でもわかるjoinとsplitの使い分け
文字列と配列の変換は、Rubyでデータ操作や文字列処理を行う際の基本中の基本です。覚えておくと、CSVデータの処理やユーザー入力の解析など、さまざまな場面で活用できます。
- 配列を文字列にまとめたいとき → join
- 文字列を区切って配列にしたいとき → split
- 文字列を1文字ずつ配列にしたいとき → chars
この3つを組み合わせることで、文字列⇔配列の相互変換が自由自在にできます。
7. ポイント整理
ここまで見てきたように、Rubyで文字列と配列を扱うときは、まず「どの形で持っていると扱いやすいか」を考えると理解しやすくなります。画面に表示したいときやファイルに書き出したいときは文字列、ひとつひとつの要素に対して繰り返し処理をしたいときは配列、といったイメージです。そのうえで、配列から文字列に変換したいときはjoin、文字列をバラして配列にしたいときはsplit、さらに細かく一文字ずつ扱いたいときはcharsという役割分担を覚えておくと、Rubyのコードがぐっと書きやすくなります。
たとえば、名前がカンマ区切りでひとつの文字列として渡されてきた場合、いきなりそのまま処理しようとすると「何番目の名前か」「特定の名前が含まれているか」といった判定がややこしくなります。そこで一度splitで配列に変換し、配列として検索や並び替えを行い、最後に画面表示用にjoinで文字列に戻す、といった流れを取ると、処理の意図も読みやすくなり、Rubyらしいシンプルなプログラムになります。これはWebアプリケーションのフォーム入力やCSVデータの取り扱いなど、実務に近い場面でも同じ考え方で応用できます。
names_text = "たなか,さとう,すずき"
# 文字列を配列に分解する
names = names_text.split(",")
# 配列として処理する(ここでは先頭に「やまだ」を追加)
names.unshift("やまだ")
# 表示用に文字列へ戻す
puts names.join(" / ")
やまだ / たなか / さとう / すずき
このサンプルは、文字列をsplitで配列に変換し、配列に対して要素の追加を行ったあと、joinで見やすい形式の文字列に戻す、という一連の流れを素直に表しています。プログラミング未経験の方でも、「文字列は一続きの文章」「配列は箱に並んだ要素の集まり」とイメージしながら、状況に応じて行き来させているだけだと捉えると理解しやすいでしょう。また、日本語を含む文字列を扱うときは、文字コード(エンコーディング)が正しく設定されていれば、splitやjoinも自然に動作してくれます。まずは身近な文章や簡単なリストを題材に、文字列から配列へ、配列から文字列へと変換しながら、手を動かして慣れていくのがおすすめです。
まとめ
Rubyでの文字列と配列の相互変換は、日常的なプログラミング作業の中でも特に頻度が高く、データ整理や文章処理のあらゆる場面で役立つ重要な要素です。この記事で学んだ「join」「split」「chars」といった基本メソッドは、どれも単体で便利な機能を持ちながら、組み合わせることでより高度な加工処理が可能になります。たとえば、複数の単語を配列として管理し、必要に応じて文字列としてまとめ直したり、文章を分解して配列として扱いながら加工したりする場面では、これらのメソッドが大きな力を発揮します。また、さまざまな区切り文字に対応できる柔軟性や、日本語の文字列処理にも強いRubyならではの直感的な操作が特徴であり、複雑な処理をシンプルな記述で表現できる点も魅力のひとつです。
特に「join」メソッドは配列の要素を一つの文字列として結びつける際に便利で、区切り文字を自由に設定できるため、データを表示形式に整える処理に最適です。一方「split」は文字列を分割するだけでなく、指定した区切りを基準に情報を正確に抽出できるため、入力データの解析やCSV形式の分割、ログデータの処理などにも効果的に使えます。そして「chars」は文字列を一文字ずつ扱えるようにし、細かな調整や部分的な加工を可能にします。こうした特徴を活かして、文字列をいったん配列に変換し、加工したあと再び文字列に戻すことで、柔軟で見通しの良いコードを書くことができます。以下では、記事で学んだ内容を踏まえた応用的なコード例を示し、複雑なデータ加工をより分かりやすく整理する方法を紹介します。
サンプルプログラム:splitとjoinを組み合わせた柔軟加工
sentence = "すもも,もも,もものうち"
words = sentence.split(",") # 配列へ変換
words.map! { |w| w.gsub("もも", "桃") } # 条件加工
result = words.join("・") # 表示用形式に変換
puts result
すもも・桃・桃のうち
この例では、splitで区切り文字を基準に文字列を配列へ変換し、配列内の特定の文字を条件付きで置換したうえで、joinを使って見やすい形式に整えています。Rubyではこのような「分解 → 加工 → 再構築」という流れが非常に直感的に書けるため、文章の整理やデータ整形を自然に行えます。また、charsとjoinを組み合わせることで一文字単位での調整もできるため、より細かな処理も容易です。
文字列から配列へ、そして配列から文字列へという変換操作は、Rubyの柔軟なデータ処理の基礎であり、扱えるようになるとプログラムの表現力が格段に広がります。複数のメソッドを組み合わせながら、対象のデータをどのように加工したいか意識しつつコードを書くことで、効率的で読みやすい実装を生み出すことができます。本記事で紹介した内容を何度か実際に手を動かしながら試していくことで、自然と理解が深まり、さまざまな場面で応用できる力が身につくでしょう。
生徒
「先生、joinとsplitって似ているようで役割が全然違うんですね。」
先生
「そうですね。joinは配列をまとめるために使い、splitは文字列を分割するために使います。両方を理解して使い分ければ、文字列加工の幅が大きく広がりますよ。」
生徒
「charsで一文字ずつ扱えるのも便利でした!文章の小さな加工にも使えそうです。」
先生
「その通りです。charsとjoinを組み合わせると細かい調整も簡単にできますし、splitとjoinの流れを身につけると、複雑な文字列処理もスムーズになります。」
生徒
「いろんな場面で使えるんですね。次はCSVやログの処理にも挑戦してみます!」
先生
「とても良いですね。基礎を押さえたので、実際のデータでもどんどん試してみましょう。」