获取Ruby中gsub替换的数量

Dan*_*scu 1 ruby

gsub返回字符串,或nil.有没有办法让它返回它所取代的替换数量?

shi*_*vam 5

我可以想到gsub像这样使用块:

count = 0
str.gsub(/pat/) { |a| count+=1; "replacement" }
Run Code Online (Sandbox Code Playgroud)

例:

str = "lets replace all s with S"
count = 0
str.gsub("s") { |a| count+=1; "S" }
count
#=> 2
Run Code Online (Sandbox Code Playgroud)