如何拆分一串数量不均匀的重复字符? 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"]