在Ruby中按连续组拆分

aar*_*rio 0 ruby regex

我有下一个字符串:

txt = "HwwwwjjaoHHHHaffgd"
Run Code Online (Sandbox Code Playgroud)

我需要通过对相同的连续字符进行分组来形成一个数组:

["H" "wwww" "jj" "a" "o" "HHHH" "a" "ff" "g" "d"]
Run Code Online (Sandbox Code Playgroud)

Car*_*and 6

这有几种方法可以做到这一点.

txt = "Hwwww||333jjao{{\\HHHH@@affg//d"

txt.split(/(?<=(.))(?!\1)/).each_slice(2).map(&:first)

txt.each_char.slice_when(&:!=).map(&:join)

txt.each_char.chunk(&:itself).map { |_,a| a.join }

txt.each_char.chunk_while(&:==).map(&:join)

txt.gsub(/(?<=(.))(?!\1)/, ' ').split

txt.gsub(/(.)\1*/).reduce([], &:<<)  

txt[1..-1].each_char.with_object([txt[0]]) {|c,a| a.last[-1]==c ? (a.last<<c) : a << c}
Run Code Online (Sandbox Code Playgroud)

以上都归来了

["H", "wwww", "||", "333", "jj", "a", "o", "{{", "\\", "HHHH", "@@", "a",
 "ff", "g", "//", "d"]
Run Code Online (Sandbox Code Playgroud)