我需要从Ruby中的字符串中删除一些短语。短语在数组中定义。它看起来像这样:
remove = ["Test", "Another One", "Something Else"]
然后我想检查并从给定的字符串中删除它们。
“这是一个测试”=> “这是一个 ” “这是另一个”=> “这是 ” “这是另外两个”=> “这是另外两个”
使用Ruby 1.9.3和Rail 3.2.6。
答案 0 :(得分:5)
ary = ["Test", "Another One", "Something Else", "(RegExp i\s escaped)"]
string.gsub(Regexp.union(ary), '')
Regexp.union
可以用来将一个字符串(或正则表达式)数组编译成一个正则表达式,因此只需要一次搜索&取代
Regexp.union ['string', /regexp?/i] #=> /string|(?i-mx:regexp?)/
答案 1 :(得分:1)
最简单(但不是最有效):
# Non-mutating
cleaned = str
remove.each{ |s| cleaned = cleaned.gsub(s,'') }
# Mutating
remove.each{ |s| str.gsub!(s,'') }
效率更高(但不太清晰):
# Non-mutating
cleaned = str.gsub(Regexp.union(remove), '')
# Mutating
str.gsub!(Regexp.union(remove), '')