📄 17 - replacing multiple patterns in a single pass.rb
字号:
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#---"GO HOME!".mgsub([[/.*GO/i, 'Home'], [/home/i, 'is where the heart is']])# => "Home is where the heart is!"#---"Here is number #123".mgsub([[/[a-z]/i, '#'], [/#/, 'P']])# => "#### ## ###### P123"#---"FOO bar".gsub(/foo/i, "The bar").gsub(/bar/m, "result")# => "The result result""Here is number #123".gsub(/[a-z]/i, "#").gsub(/#/, "P")# => "PPPP PP PPPPPP P123"#---"between".mgsub(/ee/ => 'AA', /e/ => 'E') # Bad code# => "bEtwEEn""between".mgsub([[/ee/, 'AA'], [/e/, 'E']]) # Good code# => "bEtwAAn"#---
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -