Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

String#splitの小ネタ集

文字列を配列として切り分けるsplitメソッドですが、
引数を工夫する事でロジック簡略化に貢献することができます。

正規表現を使う

第一引数には、文字列以外にも正規表現を使う事ができます。

 "hoge 123 Jaga 太郎".split(/\s*/)
=> ["h", "o", "g", "e", "1", "2", "3", "J", "a", "g", "a", "", ""]

これは似たメソッドのscanにも適用できます*1

"7235ff35119718519385723986781724102ed41ae".scan(/\d{2}/)
#=> ["72", "35", "35", "11", "97", "18", "51", "93", "85", "72", "39", "86", "78", "17", "24", "10", "41"]

第二引数で適用回数を指定

splitに第二引数を持たせると、適用回数を指定できます。

"as you like".split(" ", 2)
#=> ["as", "you like"]

ゼロの場合はデフォ通り最後迄、負の数を指定すると末尾のヌル文字まで面倒をみてくれるようです

"as you like".split(/\s*/, -1)
#=> ["a", "s", "y", "o", "u", "l", "i", "k", "e", ""]

"as you like".split(/\s*/, 0)
#=> ["a", "s", "y", "o", "u", "l", "i", "k", "e"]

*1:これはパターンに一致するものを末尾まで延々繰り返すメソッドです