こんにちは!システムエンジニアのオオイシです。
プログラミングをしていると、文字列を分割して取得したい場合があります。
そんなとき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"]
このように、正規表現にマッチする部分で分割することが確認できました。
正規表現の基礎については、こちらの記事で詳しく解説しているので、ぜひ確認してみてください。
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メソッドの使い方を忘れてしまったらこの記事を確認してください!