读书人

在一个字符串下同时执行多次搜索替代操

发布时间: 2012-12-28 10:29:05 作者: rapoo

在一个字符串上同时执行多次搜索替代操作

"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

读书人网 >编程

热点推荐