首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何分割数量不均匀的重复字符串?红宝石

如何分割数量不均匀的重复字符串?红宝石
EN

Stack Overflow用户
提问于 2016-02-03 20:08:56
回答 2查看 1.3K关注 0票数 3

如果我有一个字符串,比如"aabbbbccdddeffffgg",并且我想将这个字符串拆分成这个数组:["aa", "bbbb", "cc", "ddd", "e", "ffff", "gg"],我将如何处理这个问题?

我知道string.split/.../ <或者你在那里放了多少个句点,但是它不考虑字符串是否不均匀。我正在处理的问题的要点是取两个字符串,看看一行中是否有三个字符,另一行中是否有两个字符。我试过了

代码语言:javascript
复制
  `letter_count_1 = {}
    str1.each_char do |let|
       letter_count_1[let] = str1.count(let)
    end`

但是,这给出了字符串中每个字符总数的计数,一些输入在多个地方随机使用相同的字母,比如"aabbbacccdba"

那么,如何将字符串按字符拆分呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-03 20:25:07

您可以使用带有反向引用和scan()方法的regex:

代码语言:javascript
复制
str = "aabbbbccdddeffffgg"
groups = []
str.scan(/((.)\2*)/) { |x| groups.push(x[0]) }

之后,groups将如下所示:

代码语言:javascript
复制
["aa", "bbbb", "cc", "ddd", "e", "ffff", "gg"]
票数 4
EN

Stack Overflow用户

发布于 2016-02-03 21:31:32

这是一个非regexp版本

代码语言:javascript
复制
str = "aabbbbccdddeffffgg"
p str.chars.chunk(&:itself).map{|x|x.last.join} #=> ["aa", "bbbb", "cc", "ddd", "e", "ffff", "gg"]
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35186708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档