"11231114"
到
['11', '2', '3', '111', '4']
答案 0 :(得分:2)
您可以按如下方式实施String#scan
:
"11231114".scan(/((\d)\2*)/).map(&:first)
#=> ["11", "2", "3", "111", "4"]
您可以将一个块传递给 String#scan
,将匹配组推送到一个数组。
matches = []
"11231114".scan(/((\d)\2*)/) do |n,r| matches << n end
击> <击> 撞击>
答案 1 :(得分:1)
在Javascript中你可以这样做:
var m = "11231114".match(/(\d)\1*/g)
//=> ["11", "2", "3", "111", "4"]
您可以在任何使用的语言/工具中使用类似的方法。
方法是使用(\d)
捕获一个数字,然后使用\1*
匹配相同的所有反向引用。
答案 2 :(得分:1)
你可以这样做,
> str = "11231114"
=> "11231114"
> str1 = str.gsub(/(?<=(\d))(?!\1)/, "*")
=> "11*2*3*111*4*"
> str1.split('*')
=> ["11", "2", "3", "111", "4"]
答案 3 :(得分:1)
Ruby 2.2中有slice_when
:
"11231114".chars.slice_when { |x, y| x != y }.map(&:join)