首页 > 解决方案 > 如何在Ruby中的每个第n个字符之后有效地分割一个很长(数百万个字符)的字符串?

问题描述

假设我有一个字符串

string = "hellohellohey"

我想将它拆分为每个第二个字符,所以它看起来像这样

string = ["he","ll","oh","el","lo","he","y"]

我尝试使用该scan(/.{2}/)方法,但如果数组项不能除以 2,则它不起作用。

编辑:有必要通知您 2-character 的东西是一个例子。我正在做一些大事,所以我将每 800万个字符拆分一次。因此,将其拆分为单个字符并使用each_slice在这里不起作用。它只是冻结了我的笔记本电脑。

标签: arraysrubystringsplit

解决方案


您可以链接多种方法,如下所示:

string = 'hellohellohey'
string.chars.each_slice(2).map { |s| s.join }
# => ["he", "ll", "oh", "el", "lo", "he", "y"]

#chars将字符串转换为字符数组。

#each_slice将数组拆分为所需数量的部分。

更新 - 没有中间/临时数组

根据评论,感谢@Cary Swoveland,可以避免临时数组,如下所示。

string.each_char.each_slice(2).map { |s| s.join }

#each_char给出每个字符的枚举器。


推荐阅读