String#split
は指定したデリミタ文字列(正規表現による区切り文字列の指定も可能)で文字列を分割し、その結果を配列で返します。
デリミタを省略すると、文字列の先頭と末尾のスペースを取り除いた上で、連続した空白文字で分割してくれます。
'A B C'.split #=> ["A", "B", "C"]
'A B C '.split #=> ["A", "B", "C"]
"A\t B \tC\t".split #=> ["A", "B", "C"]
デリミタとして nil
や ' '
(1 文字の半角スペース)を指定した場合も、省略時と同様に振る舞います。
'A B C '.split(nil) #=> ["A", "B", "C"]
下記は、連続するスペースの代わりにカンマで区切る例です。 文字列の末尾に連続して現れるデリミタは無視されます。
'A,B,C'.split(',') #=> ["A", "B", "C"]
'A, B, C'.split(',') #=> ["A", " B", " C"]
'A,,B,C'.split(',') #=> ["A", "", "B", "C"]
',,A,B,C'.split(',') #=> ["", "", "A", "B", "C"]
'A,B,C,,,'.split(',') #=> ["A", "B", "C"] ★末尾の連続するセパレータは無視される
'A,B,C, , '.split(',') #=> ["A", "B", "C", " ", " "] ★セパレータ間にスペースがあれば無視されない
下記のようにすれば、文字列の先頭と末尾、各セパレータの前後のスペースを取り除きつつ分割することができます。
' A, B, C '.strip.split(/\s*,\s*/) #=> ["A", "B", "C"]
デリミタとして空文字 ''
を指定すると、1 文字ずつに分割されます。
ただ、String
クラスには、文字列を一文字ずつに分割する chars
メソッドが用意されていますので、そちらを使った方が意図が伝わりやすいかもしれません。
'ABC'.split('') #=> ["A", "B", "C"]
'ABC'.chars #=> ["A", "B", "C"]