你说这不是@pwned 链接到的问题的重复,但它有点。你只需要稍微摆弄一下Ruby。
s = "hello world, I am the universe, I am the world" # original string
a = s.split(/(I am)/)
#=> ["hello world, ", "I am", " the universe, ", "I am, " the world"]
现在我们将使用上面链接的 SO 问题中建议的解决方案。除了我们将跳过数组的第一个元素。
sliced = a[1..-1].each_slice(2).map(&:join)
#=> ["I am the universe, ", "I am the world"]
现在我们将它与我们遗漏的数组元素结合起来。
final = [a[0]] + sliced
#=> ["hello world, ", "I am the universe, ", "I am the world"]
将其放入如下方法中:
class String
def split_and_include(words)
s = self.split(/(#{words})/)
[s[0]] + s[1..-1].each_slice(2).map(&:join)
end
end
"You all everybody. You all everybody.".split_and_include("all")
#=> ["You ", "all everybody. You ", "all everybody."]
我确信有一种更清洁的方法可以做到这一点,我会在发现更简单的方法后更新答案。