Rubyで文字列を分割する方法を紹介します。
区切り文字で分割する
文字列を分割するときにはsplitを使用します。
1 |
対象文字列.split(区切り文字) |
対象文字列を区切り文字で分割し、分割された文字列を配列で返します。区切り文字が空白の場合は引数を省略できます。
1 2 3 |
str = "Tokyo Shibuyaku 03-1234-5678" a = str.split print a # ["Tokyo", "Shibuyaku", "03-1234-5678"] |
区切り文字が空白以外の場合は、第1引数に区切り文字を渡します。
1 2 3 |
str = "Tokyo:Shibuyaku:03-1234-5678" a = str.split(':') print a # ["Tokyo", "Shibuyaku", "03-1234-5678"] |
上の例では文字列が 「:」で区切られています。
正規表現で分割する
第1引数に正規表現を渡すことで、そのパターンにマッチした文字列で分割できます。
1 2 3 |
str = "Tokyo, Shibuyaku , 03-1234-5678" a = str.split(/\s*,\s*/) print a # ["Tokyo", "Shibuyaku", "03-1234-5678"] |
上のプログラムでsplitに渡された正規表現は、「空白の繰り返し」で「,」がはさまれたものを表します。正規表現を使えば、このような表記ゆれにも対応することが可能です。
分割個数を制限する
第2引数に分割制限の値を渡すことで、分割個数を制限することができます。
1 |
対象文字列.split(区切り文字, 分割制限) |
第2引数にはsplitが返す配列の要素数を指定します。
1 2 3 |
str = "Mike:MTG:09:10:30" a = str.split(':', 3) print a # ["Mike", "MTG", "09:10:30"] |
第2引数に渡す値は、「分割回数」ではなく戻り値として返す「配列の要素数」ですので注意してください。