Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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:これはパターンに一致するものを末尾まで延々繰り返すメソッドです