在一个字符串上同时执行多次搜索替代操作
"Here is number #123".gsub(/[a-z]/i, '#').gsub(/#/, 'P')
?
这段代码将会输出:PPPP PP PPPPPP P123,我现在想把所有的字母替换成#,同时将#替换成P,那该怎么办呢?
?
现在提供一个方法,可以在一个字符串上同时执行多次搜索替代操作。
?
class String def mgsub(key_value_pairs = [].freeze) regexp_fragments = key_value_pairs.collect{|k, v| k} gsub(Regexp.union(*regexp_fragments)) do |match| key_value_pairs.detect{|k, v| k =~ match}[1] end endend?
再看一下调用
"Here is number #123".mgsub([[/[a-z]/i, '#'], [/#/, 'P']])
?
后的输出结果:#### ## ###### P123