我需要从 Ruby 中的字符串中删除一些短语。短语在数组中定义。它可能看起来像这样:
remove = ["Test", "Another One", "Something Else"]
然后我想检查并从给定的字符串中删除这些。
“这是一个测试” => “这是一个” “这是另一个” => “这是” “这是另一个两个” => “这是另一个两个”
使用 Ruby 1.9.3 和 Rail 3.2.6。
我需要从 Ruby 中的字符串中删除一些短语。短语在数组中定义。它可能看起来像这样:
remove = ["Test", "Another One", "Something Else"]
然后我想检查并从给定的字符串中删除这些。
“这是一个测试” => “这是一个” “这是另一个” => “这是” “这是另一个两个” => “这是另一个两个”
使用 Ruby 1.9.3 和 Rail 3.2.6。
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?)/
最简单(但不是最有效):
# 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), '')