String#unpack が使える。
irb(main):001:0> "abc".unpack("A1A1A1") => ["a", "b", "c"] irb(main):002:0> "abcdefg".unpack("A1A2A3") => ["a", "bc", "def"] irb(main):003:0> "abcdefghij".unpack("A1A2A3A4") => ["a", "bc", "def", "ghij"]
まあ、Ruby ではこれが常套手段なのかな。
takatoh's blog – Learning programming languages.
String#unpack が使える。
irb(main):001:0> "abc".unpack("A1A1A1") => ["a", "b", "c"] irb(main):002:0> "abcdefg".unpack("A1A2A3") => ["a", "bc", "def"] irb(main):003:0> "abcdefghij".unpack("A1A2A3A4") => ["a", "bc", "def", "ghij"]
まあ、Ruby ではこれが常套手段なのかな。
たまには Python も書かねば。
タイトルのとおりなんだけど、ちょうどいい関数やメソッドが見当たらなかったので書いた。
要するに Ruby の Enumerable#each_slice みたいなのの文字列版。
def string_each_slice(s, n): i = 0 r = [] while i < len(s): r.append(s[i:i+n]) i += n return r s = "abcdefg" print string_each_slice(s, 2)
^o^ > python string_each_slice.py ['ab', 'cd', 'ef', 'g']
最後が指定した固定長に足らない場合は、足らないまま返す。まあ、これは Ruby の Enumerable#each_slice と同じ振る舞いにしただけ。