基于连续字符的运行将字符串拆分为数组

时间:2011-01-24 01:53:51

标签: ruby regex string

我一直在Ruby中寻找这个问题的答案,但是还没有找到一个好的解决方案。我想弄清楚的是当下一个字符与前一个字符不匹配时如何拆分字符串并将分组传递给数组。即

'aaaabbbbzzxxxhhnnppp'

变为

['aaaa', 'bbbb', 'zz', 'xxx', 'hh', 'nn', 'ppp']

我知道我可以迭代字符串中的每个字符并检查是否有变化,但我很好奇是否有内置的东西可以优雅地解决这个问题。

1 个答案:

答案 0 :(得分:5)

可以使用简单的正则表达式:

'aaaabbbbzzxxxhhnnppp'.scan(/((.)\2*)/).map{|x| x[0]}
=> ["aaaa", "bbbb", "zz", "xxx", "hh", "nn", "ppp"]