Rubyのsplitメソッドについて解説した記事のアイキャッチ画像。

【Ruby】splitメソッドを理解する|区切り文字・正規表現・改行・第2引数

プログラミング学習はじめて2ヶ月ちょっとが経ちました。

エンジニアスクールに通っていますが、よく言われるのがアウトプットが大事だということ。

この2ヶ月、あまりアウトプットできていなかったので、今更ながら地道にアウトプットしていきたいと思います。

今回はRubyのsplitメソッドについてです。

この記事でわかること

  • splitメソッドとは?
  • splitの基本的な使い方
  • 区切り文字を省略した場合の挙動
  • 改行 \n を使った「1行ずつ処理する」方法
  • 正規表現を使った split の応用
  • 第2引数を使って「分割数を制限」する方法
  • splitと一緒に使われるメソッド(map・uniq)との組み合わせ

splitメソッドとは?

splitは文字列を指定した「区切り文字」で分割して配列にしてくれるメソッドです。

もっとわかりやすくいうと、splitがでてきたら、「そこを切って分割してね」という命令です。

つまり、どこで切るのか?を指定するのが区切り文字。

これが変わると、分割される位置も変わるため、結果の配列も変わってきます。

splitメソッドでよく使う形はこちらです。

文字列.split("区切り文字")

区切り文字は、

  • ","(カンマ)
  • " "(スペース)
  • "-"(ハイフン)
  • "|"(パイプ)

など 自由に指定できる のがポイント。

例1:カンマ「,」で区切る場合

"Apple,Banana,Orange".split(",")
# => ["Apple", "Banana", "Orange"]

文字列の中に、カンマ「,」が登場した場所で切っていますね。

例2:スペース「 」で区切る場合

"Hello World Ruby".split(" ")
# => ["Hello", "World", "Ruby"]

文字列の中のスペースが区切り文字ですね。

例3:ハイフン「-」で区切る場合

"2025-11-24".split("-")
# => ["2025", "11", "24"]

日付の中にハイフンが2つあるため、ハイフン部分で切り分けられます。

逆に、この文字列を" "(スペース)でsplitするとどうなるでしょうか?

"2025-11-24".split(" ")
# => ["2025-11-24"]

スペースが存在しないため、まったく分割されない結果に。

ポイント

  • split の戻り値は 必ず配列(Array)
  • 元の文字列は変更されない(破壊的ではない)

破壊的ではない=元のデータが変更されないこと

破壊的;元のデータを書き換えること

区切り文字を省略

split引数を省略 することもできます。

"Hello   World   Ruby".split
# => ["Hello", "World", "Ruby"]

ここでのポイントは、

  • デフォルトだと 空白文字(スペース・タブ・改行など)で分割
  • しかも「連続したスペース」は 1つとして扱ってくれる

なので、ユーザーが検索語を複数書く(Google型検索)ときや、タグ付けしたいけどスペース区切りにしたいときなどに使われるようです。

改行で分割したい

テキストを「1行ずつ」処理したいケースの場合、"\n"(改行)で split します。

text = "1行目\n2行目\n3行目"

lines = text.split("\n")
# => ["1行目", "2行目", "3行目"]

Rubyやプログラムの中では、\nがというのが改行を表す文字です。

つまり、改行で分割するというのは、見えない「\n」を区切り文字としてsplitとしているという理解ですね。

正規表現と一緒に使う

split の強みのひとつとして、区切り文字に「正規表現」を指定できることがあげられます。

通常の split は、

"Apple,Banana,Orange".split(",")
# => ["Apple", "Banana", "Orange"]

のように、1種類の文字でしか区切れません。

ただ、正規表現を使うと、

  • 複数の種類の区切り文字をまとめて扱える
  • 空白や数字など、あいまいな条件で分割できる
  • ユーザー入力の揺れを吸収できる

というメリットがあります。

例1:カンマまたはセミコロンで分割

"Ruby,Rails;JavaScript".split(/,|;/)
# => ["Ruby", "Rails", "JavaScript"]

/,|;/ は、カンマ「,」またはセミコロン「;」があったらそこで切ってね

という意味の正規表現です。

ポイント

  • 複数の種類の区切り文字をまとめて扱える

例2:空白が1つ以上あれば分割

"Hello   World\tRuby".split(/\s+/)
# => ["Hello", "World", "Ruby"]

/\s+/ は「空白文字(スペース・タブ・改行など)が1つ以上連続しているところで区切ってね」という意味です。

  • \s = 空白文字(スペース、タブ、改行)
  • + = 「1回以上繰り返す」

ユーザーは入力する時に、スペースを押しすぎたり、タブを入れたり、ときどき改行したりします。

"Ruby    Rails Ruby"
"Ruby  Rails\tRuby"
"Ruby\nRails Ruby"

それらをみんな .split(/\s+/) ひとつで綺麗に整えられるので便利です。

ポイント

  • スペースの数や種類(半角スペース、タブなど)がバラバラでも1発で整えられる
  • ユーザー入力のゆらぎを吸収できる

第2引数で「分割数」を制限する

split にはもうひとつ強みがあり、それは第二引数で「何回分割するか」を指定することができる機能です。

書き方:

文字列.split(区切り文字, 分割数)

例1:最初の1回のみ分割したい場合

"2025-11-24".split("-", 2)
# => ["2025", "11-24"]

これは、

  1. 最初の - のところだけで区切る
  2. 残りは丸ごと1つにまとめる

という意味になるため、

  • "2025"
  • "11-24"

の2つにわかれます。

  • ファイル名の最初の部分だけ取りたい
  • "名前:プロフィール文" の「名前だけ分けたい」
  • URL の最初のドメインだけ取りたい

など、先頭の1回だけ切り出したいケースで使用されます。

例2:プロフィール文を「最初の:だけ」区切りたい場合

text = "名前: 田中: 30代エンジニア志望"
key, value = text.split(":", 2)

結果:

key   # => "名前"
value # => " 田中: 30代エンジニア志望"

split(":", 2) の意味は:

最大で2つに分ける:

  • 最初のコロンで1回だけ切る
  • 残りは全部まとめて2つ目に入る

という動きをしています。

splitとよく一緒に使うメソッド

split は、それだけで使うことも多いですが、

Rubyでは splitmapuniq などとチェーンして使うパターンもよくあります。

例:タグ文字列を配列に変換(空白除去+重複削除)

tag_string = "Ruby, Rails, Ruby,  Ruby "

tag_names = tag_string.split(",")   # => ["Ruby", " Rails", " Ruby ", "  Ruby "]
              .map(&:strip)        # => ["Ruby", "Rails", "Ruby", "Ruby"]
              .uniq                # => ["Ruby", "Rails"]

ここでの動きは、

  • split(",") でカンマごとに分割
  • map(&:strip) で前後の空白を削除
  • uniq で重複を取り除く

となります。

splitメソッドまとめ

ここまで、Rubyのsplitメソッドについて解説してみました。

splitメソッドは、「文字列をどこで区切るのか?」を自由に指定できるとても便利なメソッドということがわかりました。

これからも学習した内容をアウトプットしていきたいと思います。

ここまで読んでいただきありがとうございます。

-Ruby
-, , , ,

Translate »