Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 字符串#gsub用于维护案例?_Ruby_Regex_String_Gsub - Fatal编程技术网

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"