3
使用gsub
時,有可能維持案件嗎?String#gsub維護大小寫嗎?
這是一個工作示例,可以做到這一點,而不需要撥打gsub
兩次?也許在正則表達式中添加大小寫不敏感的i
?
'Strings'.gsub(/s/, 'z').gsub(/S/, 'Z') #=> Ztringz
目標(顯然不工作):
'Strings'.gsub(/s/i, 'z') #=> Ztringz
使用gsub
時,有可能維持案件嗎?String#gsub維護大小寫嗎?
這是一個工作示例,可以做到這一點,而不需要撥打gsub
兩次?也許在正則表達式中添加大小寫不敏感的i
?
'Strings'.gsub(/s/, 'z').gsub(/S/, 'Z') #=> Ztringz
目標(顯然不工作):
'Strings'.gsub(/s/i, 'z') #=> Ztringz
如何使用String#tr
:
'Strings'.tr('sS', 'zZ')
# => "Ztringz"
三種方法使用String#gsub:
隨着塊一個簡單的條件表達式
'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 }
對於具有默認值
散列10