我正在尝试转换字符串:
"Stack_Overflow"
到一个被预定数量的字符(比如5个字符)分割的数组:
result = ["Stack", "_Over", "flow"]
如果没有什么可以干净利落地完成,我可以制作一个可以为我做的循环,只要我能做一些更基本的事情,比如有一个像这样的数组:
["S", "t", "a", "c", "k"]
然后把它变成:
["Stack"]
我知道如何使用Array#join
方法组合数组,但这会将其转换为字符串。使用<<
运算符只需添加一个额外的元素,我需要铲入SAME元素。并且Array#flatten
也不会像改变索引值本身那样工作。也许如果我可以String#split
字符串开始,我可以转换它。但是split
方法希望看到一个模式/字符来表示分割,它只需要是一些字符。所以我的研究有点不知所措。
答案 0 :(得分:6)
可以使用String#scan
完成:
"Stack_Overflow".scan(/.{1,5}/)
#=> ["Stack", "_Over", "flow"]
将5
更改为您想要的任何预定数量的字符。
答案 1 :(得分:4)
我更喜欢@ spickermann使用正则表达式,但这是使用两个枚举器来避免创建临时数组的另一种方式:
str = "It was the best of times, it was the worst of times."
str.each_char.each_slice(5).map(&:join)
# => ["It wa", "s the", " best", " of t", "imes,", " it w",
# "as th", "e wor", "st of", " time", "s."]