You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby中如何将字符串"33255563"转换为连续相同字符分组数组?

如何在Ruby中将字符串转换为连续相同字符组成的数组

当然可以实现这个需求!Ruby提供了好几种简洁的方式来完成这个任务,下面给你介绍两种最常用的方法:

方法一:使用scan配合正则表达式

String#scan方法可以根据正则表达式匹配字符串中的所有子串,正好适合我们提取连续相同字符的场景。

具体代码如下:

input_str = "33255563"
output_array = input_str.scan(/(.)\1*/).flatten

puts output_array.inspect # => ["33", "2", "555", "6", "3"]

正则表达式解释:

  • (.):捕获任意单个字符,把它存到第一个捕获组里
  • \1*:匹配前面捕获组里的字符零次或多次,这样就能把连续相同的字符都归为一组

scan返回的是二维数组(每个匹配结果是一个包含捕获组的数组),所以我们用flatten把它转成一维数组,就得到了想要的结果。

方法二:使用chunk方法

Ruby的Enumerable#chunk方法专门用来对连续相同的元素进行分组,字符串可以被当作字符数组处理,所以也能用上这个方法:

input_str = "33255563"
output_array = input_str.chunk { |char| char }.map { |_, char_group| char_group.join }

puts output_array.inspect # => ["33", "2", "555", "6", "3"]

代码解释:

  • chunk { |char| char }:按照字符本身进行分组,把连续相同的字符分到同一组
  • map { |_, char_group| char_group.join }:遍历每个分组,把分组里的字符数组拼接成字符串,最终得到目标数组

这两种方法都能完美解决你的问题,选哪个都可以,看你个人习惯啦~

内容的提问来源于stack exchange,提问作者Matheus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:15:28