我想使用 ruby 2.1 尽可能多次地从字符串中提取模式。 String#slice!
看起来很接近,但它只提取第一个匹配项。为了解决这个问题,我编写了以下内容,但感觉很笨拙:
string = "ababab"
pattern = /a/
matches = []
# clunky
loop do
m = string.slice!(pattern) || break
matches << m
end
#=> matches == ["a", "a", "a"]
#=> string == "bbb"
现在我可以使用自己的 #extract!
方法扩展 String
类,或者为此创建一个辅助对象,但我觉得这是一个足够常见的情况,我只是缺少部分标准 API 或更特殊的方法来执行此操作。
有没有更短的写法?
最佳答案
string = "ababab"
matches = string.scan /a/ # => ['a', 'a', 'a']
string.gsub! /a/, '' # => "bbb"
关于ruby - 是否有内置 api 可以从字符串中提取模式(尽可能多次)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25040682/