将长字符串转换为数组

时间:2015-05-11 01:03:49

标签: arrays ruby string

我正在尝试转换字符串: "Stack_Overflow" 到一个被预定数量的字符(比如5个字符)分割的数组:

result = ["Stack", "_Over", "flow"]

如果没有什么可以干净利落地完成,我可以制作一个可以为我做的循环,只要我能做一些更基本的事情,比如有一个像这样的数组:

["S", "t", "a", "c", "k"]

然后把它变成:

["Stack"]

我知道如何使用Array#join方法组合数组,但这会将其转换为字符串。使用<<运算符只需添加一个额外的元素,我需要铲入SAME元素。并且Array#flatten也不会像改变索引值本身那样工作。也许如果我可以String#split字符串开始,我可以转换它。但是split方法希望看到一个模式/字符来表示分割,它只需要是一些字符。所以我的研究有点不知所措。

2 个答案:

答案 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."]