dav*_*000 1 ruby regex string split
我目前正在解决一个问题,该问题涉及按每组字符分割一个字符串。
例如,
"111223334456777" #=> ['111','22','333','44','5','6','777']
Run Code Online (Sandbox Code Playgroud)
我目前的操作方式是使用枚举器,将每个字符与下一个字符进行比较,然后以这种方式拆分数组。
res = []
str = "111223334456777"
group = str[0]
(1...str.length).each do |i|
if str[i] != str[i-1]
res << group
group = str[i]
else
group << str[i]
end
end
res << group
res #=> ['111','22','333','44','5','6','777']
Run Code Online (Sandbox Code Playgroud)
我想看看是否可以使用正则表达式来执行此操作,这将使此过程更加容易。我知道我可以将这段代码放在一个方法中,但是我很好奇是否可以在这里使用正则表达式。
所以我想做的是
str.split(/some regex/)
Run Code Online (Sandbox Code Playgroud)
产生相同的结果。我想到了积极的前瞻性,但是我不知道如何让正则表达式认识到字符是不同的。
有谁知道这是否可行?
该chunk_while方法是你要寻找的位置:
str.chars.chunk_while { |b,a| b == a }.map(&:join)
Run Code Online (Sandbox Code Playgroud)
如果当前字符a与先前字符不符,那将会破坏任何东西b。如果您只想限制数字,则可以进行一些预处理。
Enumerable中有很多非常方便的方法值得探索,并且每个新版本的Ruby似乎都添加了更多方法。