【Ruby入門】splitで文字列を分割しよう!

こんにちは!システムエンジニアのオオイシです。

プログラミングをしていると、文字列を分割して取得したい場合があります。

そんなときRubyではsplitメソッドを使うのが便利です!

この記事では、

  • splitメソッドとは
  • splitメソッドの使い方

という基本的な使い方から、

  • 分割数を制限する方法

などの応用的な使い方についても解説していきます。

splitメソッドは便利な上に使い勝手もいいのでぜひ今のうちにマスターしてしまいましょう。

splitメソッドとは

splitメソッドとは簡単に言うと文字列を分割して配列にするためのメソッドです。

ある特定な文字列を、分割したいところで決まったアクションを入れてあげると、様々な方法で分割してくれるというものになります。

splitメソッドは第1引数に区切り文字を指定できますが、引数を指定しない場合は空白文字で区切られます

空白文字として扱われるのは、” “(半角スペース)”\n”(改行コード)”\t”(タブ)などです。

splitメソッドの基本的な使い方

では、実際にsplitメソッドを使って分割してみましょう。

まずは、何も引数を指定しなかった場合(空白)の挙動からみていきましょう。

何も指定せずに分割する(デフォルト)

ではまず、プログラムから見ていきましょう。

サンプルプログラム:

str = "samurai engineer blog"

array = str.split

p array

実行結果:

["samurai", "engineer", "blog"]

半角スペースで区切られて配列が返却されたことを確認できました。

実行結果で注目したいのは、”3”と”4”の間は半角スペースが2つ存在しますが、配列の要素に ””(ブランク文字)が含まれることなく配列が作成されている点です。

つまり、次のサンプルプログラムは同じ結果が返されます。

p "1 23  456".split
p "1 23   456".split
p "1 23    456".split

実行結果:

["1", "23", "456"]
["1", "23", "456"]
["1", "23", "456"]

このように、引数なしのsplitメソッドは、空白文字(” “(半角スペース)”\n”(改行コード)”\t”(タブ)など)で分割されることが確認できました。

区切り文字を指定して分割する方法

splitメソッドで任意の文字で分割するには、第1引数で指定します。

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

 

サンプルプログラム:

str = "samurai,engineer,blog"

array = str.split(",")

p array

実行結果:

["samurai", "engineer", "blog"]

分割する区切り文字は文字列も指定できます

次のサンプルプログラムで確認してみましょう。

str = "123456"

array = str.split("34")

p array

実行結果:

["12", "56"]

このように、指定した区切り文字で分割することが確認できました。

splitの応用的な使い方

正規表現で分割する方法

正規表現にマッチする部分で分割することもできます。

文字列.split(正規表現)

 

”,”(カンマ) または “.”(コロン)で正規表現で区切る例を、次のプログラムで確認してみましょう。

str = "1,23.456"

array = str.split(/[,|.]/)

p array

実行結果:

["1", "23", "456"]

このように、正規表現にマッチする部分で分割することが確認できました。

正規表現の基礎については、こちらの記事で詳しく解説しているので、ぜひ確認してみてください。

理解しづらいRubyの正規表現とは?〜基礎の基礎を知ろう〜
更新日 : 2019年4月2日

1文字ずつ分割する方法

文字列を1文字ずつ分割するには、区切り文字に""(ブランク)を指定します。

文字列.split("")

 

次のプログラムで確認してみましょう。

str = "123456"

array = str.split("")

p array

実行結果:

["1", "2", "3", "4", "5", "6"]

このように、文字列を1文字ずつ分割できることが確認できました。

分割数を制限する方法(第2引数の”limit”)

splitメソッドは分割数を指定することができます。

分割数を指定することで、分割した後の配列の要素数を指定することができます。

分割数はsplitメソッドの第2引数で指定します。

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

分割数が文字列に含まれる区切り文字より少ない場合は、文字列の前方を優先して分割します。

次のプログラムで確認してみましょう。

str = "1,2,3,4,5,6"

array = str.split(",", 2)

p array

実行結果:

["1", "2,3,4,5,6"]

このように、返却された配列の要素数が2つで分割されたことが確認できました。

もう一つみておきましょう。

str = "1,2,3,4,5,6"

array = str.split(",", 4)

p array

4つで分割すると、前方から優先して分割されるので、

["1", "2", "3", "4,5,6"]

はい、こうなりますね。

まとめ

今回はStringクラスのsplitメソッドの使い方について説明しました。

splitメソッドは文字列を分割して配列にする場合に使用します。

文字列を分割して処理するケースは実際の開発現場においてもよく使うのでぜひ活用してみください。

もし、splitメソッドの使い方を忘れてしまったらこの記事を確認してください!

LINEで送る
Pocket

SEからWebエンジニアへ転職した理由

侍エンジニア塾卒業生の小池さんは、以前は社内SEとして約5年ほど勤務していました。しかし業務内容は社内のヘルプデスク対応など、プログラムを書く仕事は全くなかったそうです。

SEながらプログラムを書けない現状に「将来仕事がなくなるんじゃないか」と不安を感じ、プログラミング学習を決意。

弊社スクールで学習し、無事ベンチャー企業のプログラマーとして転職に成功しました。そんな小池さんの学習法や転職体験談を伺いましたので、是非ご覧ください。

「プログラミングができないSEは仕事がなくなる」不安を感じたSEが未経験から転職成功するまで
更新日 : 2019年10月7日

書いた人

オオイシ

オオイシ

システムエンジニア歴15年のオオイシです!好物は Java と Ruby。プログラミング、システムアーキテクトからマネジメントに到るまでなんでも食べます。
システム開発の相談やお困りごとがあればお気軽に
[email protected] まで連絡頂けると幸いです

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説