Ruby 字符串#gsub用于维护案例?
使用Ruby 字符串#gsub用于维护案例?,ruby,regex,string,gsub,Ruby,Regex,String,Gsub,使用gsub时,是否可以维护案例 这是一个工作示例,是否可以在不调用两次gsub的情况下执行此操作?也许可以在正则表达式中添加不区分大小写的i 'Strings'.gsub(/s/, 'z').gsub(/S/, 'Z') #=> Ztringz 目标(显然不起作用): 如何使用: 三种使用方法: 带有块和简单条件表达式 'Strings'.gsub(/s/i) { |str| str=='s' ? 'z' : 'Z' } #=> "Ztringz" 带有块和ASCII值
gsub
时,是否可以维护案例
这是一个工作示例,是否可以在不调用两次gsub
的情况下执行此操作?也许可以在正则表达式中添加不区分大小写的i
'Strings'.gsub(/s/, 'z').gsub(/S/, 'Z') #=> Ztringz
目标(显然不起作用):
如何使用:
三种使用方法:
带有块和简单条件表达式
'Strings'.gsub(/s/i) { |str| str=='s' ? 'z' : 'Z' }
#=> "Ztringz"
带有块和ASCII值偏移
offset = 'z'.ord-'s'.ord
#=> 7
'Strings'.gsub(/s/i) { |str| (str.ord + offset).chr }
#=> "Ztringz"
该块也可以写为:
{ ($&.ord + offset).chr }
具有默认值的哈希
'Strings'.gsub(/s/i, Hash.new { |_,k| k }.update('s'=>'z', 'S'=>'Z'))
#=> "Ztringz"
{ ($&.ord + offset).chr }
'Strings'.gsub(/s/i, Hash.new { |_,k| k }.update('s'=>'z', 'S'=>'Z'))
#=> "Ztringz"