arrays - 如何在Ruby中的每个第n个字符之后有效地分割一个很长(数百万个字符)的字符串?
问题描述
假设我有一个字符串
string = "hellohellohey"
我想将它拆分为每个第二个字符,所以它看起来像这样
string = ["he","ll","oh","el","lo","he","y"]
我尝试使用该scan(/.{2}/)
方法,但如果数组项不能除以 2,则它不起作用。
编辑:有必要通知您 2-character 的东西是一个例子。我正在做一些大事,所以我将每 800万个字符拆分一次。因此,将其拆分为单个字符并使用each_slice
在这里不起作用。它只是冻结了我的笔记本电脑。
解决方案
您可以链接多种方法,如下所示:
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给出每个字符的枚举器。
推荐阅读
- javascript - 反向数组不使用反向
- javascript - How to include new google material design icon inside node modules?
- android - Android kotlin将列表行分配给变量错误
- sql-server - SQL Function to Increment 6 character ISO date field with format 'YYYYWW'
- javascript - How to preserve dot using split and negative lookahead
- gatling - Gatling overrides `Cookie` header with the `Set-Cookie` header of previous response
- mysql - Convert a string of comma separated values into values for mysql stored procedure
- javascript - 如何使用按钮显示所选图像
- javascript - 如何在Javascript中获取大浮点数的前两位
- python - 如何在Flask内部函数中重定向