Arrays 当字符与前一个字符不同时,在ruby中拆分字符串

Arrays 当字符与前一个字符不同时,在ruby中拆分字符串,arrays,ruby,string,Arrays,Ruby,String,我想在字符更改时拆分字符串 例如,应将“aabbbc226%%*”拆分为如下数组[“aa”、“bbb”、“c”、“22”、“6”、“%%”、“*”] 这是我现在有的 def split_when_char_change(str) array = Array.new chars = str.split('') chars.each { |c| array.push c } array end 更改字符时拆分(“aabbbc226%%*”) 我得到以下输出:

我想在字符更改时拆分字符串

例如,应将
“aabbbc226%%*”
拆分为如下数组
[“aa”、“bbb”、“c”、“22”、“6”、“%%”、“*”]

这是我现在有的

def split_when_char_change(str)
   array = Array.new
   chars = str.split('')
   chars.each { |c|
     array.push c
   }
   array
end
更改字符时拆分(“aabbbc226%%*”)

我得到以下输出:
[“a”、“a”、“b”、“b”、“c”、“2”、“2”、“6”、“%”、“%”、“%”、“*”]
这是错误的


如何获得所需的阵列?

这里有一个使用的单行程序:

"aabbbc226%%*".chars.chunk(&:itself).map{|_,c| c.join}
# => ["aa", "bbb", "c", "22", "6", "%%", "*"]


@萨瓦:我把问题说得更清楚了
"aabbbc226%%*".scan(/((.)\2*)/).to_h.keys
# => ["aa", "bbb", "c", "22", "6", "%%", "*"]
"aabbbc226%%*".scan(/((.)\2*)/).map(&:first)
# => ["aa", "bbb", "c", "22", "6", "%%", "*"]