文字列を指定文字数で分割する

調べるといろいろな分割方法が見つかるが、これだけは見つからなかったので記録。

環境

方法

String#unpack を使います。

2文字ずつ分割する場合

s = "abcdefghijklmn" => "abcdefghijklmn"

s.length => 14

s.unpack("a2"*(s.length/2)) => ["ab", "cd", "ef", "gh", "ij", "kl", "mn"]

3文字ずつ分割する場合

s2 = "abcdefghijklmno" => "abcdefghijklmno"

s.length => 15

s2.unpack("a3"*(s2.length/3)) => ["abc", "def", "ghi", "jkl", "mno"]

ポイント

  • 最終文字が抜け落ちる可能性があるため、分割数の奇偶に気をつける必要があります