Rubyで区切り文字で文字列を分割する:split

Rubyで文字列を分割する方法を紹介します。

区切り文字で分割する

文字列を分割するときにはsplitを使用します。

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

対象文字列を区切り文字で分割し、分割された文字列を配列で返します。区切り文字が空白の場合は引数を省略できます。

str = "Tokyo Shibuyaku 03-1234-5678"
a = str.split
print a # ["Tokyo", "Shibuyaku", "03-1234-5678"]

区切り文字が空白以外の場合は、第1引数に区切り文字を渡します。

str = "Tokyo:Shibuyaku:03-1234-5678"
a = str.split(':')
print a # ["Tokyo", "Shibuyaku", "03-1234-5678"]

上の例では文字列が 「:」で区切られています。

正規表現で分割する

第1引数に正規表現を渡すことで、そのパターンにマッチした文字列で分割できます。

str = "Tokyo, Shibuyaku , 03-1234-5678"
a = str.split(/\s*,\s*/)
print a # ["Tokyo", "Shibuyaku", "03-1234-5678"]

上のプログラムでsplitに渡された正規表現は、「空白の繰り返し」で「,」がはさまれたものを表します。正規表現を使えば、このような表記ゆれにも対応することが可能です。

分割個数を制限する

第2引数に分割制限の値を渡すことで、分割個数を制限することができます。

対象文字列.split(区切り文字, 分割制限)

第2引数にはsplitが返す配列の要素数を指定します。

str = "Mike:MTG:09:10:30"
a = str.split(':', 3)
print a # ["Mike", "MTG", "09:10:30"]

第2引数に渡す値は、「分割回数」ではなく戻り値として返す「配列の要素数」ですので注意してください。