如果我有"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"
那么如何按字符分割字符串?
答案 0 :(得分:3)
这是一个非正则表达式版本
str = "aabbbbccdddeffffgg"
p str.chars.chunk(&:itself).map{|x|x.last.join} #=> ["aa", "bbbb", "cc", "ddd", "e", "ffff", "gg"]
答案 1 :(得分:2)
您可以使用带有后引用的正则表达式和scan()
方法:
str = "aabbbbccdddeffffgg"
groups = []
str.scan(/((.)\2*)/) { |x| groups.push(x[0]) }
之后 groups
将如下所示:
["aa", "bbbb", "cc", "ddd", "e", "ffff", "gg"]