如果我有一个字符串,比如"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"。
那么,如何将字符串按字符拆分呢?
发布于 2016-02-03 20:25:07
您可以使用带有反向引用和scan()方法的regex:
str = "aabbbbccdddeffffgg"
groups = []
str.scan(/((.)\2*)/) { |x| groups.push(x[0]) }之后,groups将如下所示:
["aa", "bbbb", "cc", "ddd", "e", "ffff", "gg"]发布于 2016-02-03 21:31:32
这是一个非regexp版本
str = "aabbbbccdddeffffgg"
p str.chars.chunk(&:itself).map{|x|x.last.join} #=> ["aa", "bbbb", "cc", "ddd", "e", "ffff", "gg"]https://stackoverflow.com/questions/35186708
复制相似问题