我一直在Ruby中寻找这个问题的答案,但是还没有找到一个好的解决方案。我想弄清楚的是当下一个字符与前一个字符不匹配时如何拆分字符串并将分组传递给数组。即
'aaaabbbbzzxxxhhnnppp'
变为
['aaaa', 'bbbb', 'zz', 'xxx', 'hh', 'nn', 'ppp']
我知道我可以迭代字符串中的每个字符并检查是否有变化,但我很好奇是否有内置的东西可以优雅地解决这个问题。
答案 0 :(得分:5)
可以使用简单的正则表达式:
'aaaabbbbzzxxxhhnnppp'.scan(/((.)\2*)/).map{|x| x[0]}
=> ["aaaa", "bbbb", "zz", "xxx", "hh", "nn", "ppp"]