我想在角色改变时拆分字符串。
例如,"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
split_when_char_change( “aabbbc226 %% *”)
我收到此输出:["a", "a", "b", "b", "b", "c", "2", "2", "6", "%", "%", "*"]
这是错误的。
如何获得我想要的数组?
答案 0 :(得分:4)
以下是使用 chunk , map 和 join 的单行内容:
"aabbbc226%%*".chars.chunk(&:itself).map{|_,c| c.join}
# => ["aa", "bbb", "c", "22", "6", "%%", "*"]
答案 1 :(得分:1)
"aabbbc226%%*".scan(/((.)\2*)/).to_h.keys
# => ["aa", "bbb", "c", "22", "6", "%%", "*"]
或
"aabbbc226%%*".scan(/((.)\2*)/).map(&:first)
# => ["aa", "bbb", "c", "22", "6", "%%", "*"]