如何拆分一串数量不均匀的重复字符? ruby

如果我有一个字符串,如"aabbbbccdddeffffgg" ,我想将字符串拆分为这个数组: ["aa", "bbbb", "cc", "ddd", "e", "ffff", "gg"] ,我该怎么办呢?

我知道string.split/.../ <或者你放在那里的时间有多长,但是如果字符串不均匀则不能解释。 我正在处理的问题的关键是取两个字符串,看看一行中是否有三个字符,另一行中是否有两个字符。 我试过了

  `letter_count_1 = {} str1.each_char do |let| letter_count_1[let] = str1.count(let) end` 

但是,它给出了字符串中每个字符总量的计数,并且一些输入在多个位置随机化了相同的字母,例如"aabbbacccdba"

那么如何按字符分割字符串呢?

您可以使用带有后引用和scan()方法的正则表达式:

 str = "aabbbbccdddeffffgg" groups = [] str.scan(/((.)\2*)/) { |x| groups.push(x[0]) } 

groups将如下所示:

 ["aa", "bbbb", "cc", "ddd", "e", "ffff", "gg"] 

这是一个非正则表达式版本

 str = "aabbbbccdddeffffgg" p str.chars.chunk(&:itself).map{|x|x.last.join} #=> ["aa", "bbbb", "cc", "ddd", "e", "ffff", "gg"] 

正则表达式不能帮助你吗?

 "aaaqda".scan(/a{3}/) => ["aaa"]