Rubystring的gsub和子方法有什么区别?

我一直在仔细阅读String的文档,并且看到了以前从未注意到的:sub方法。 我一直在使用:gsub ,看起来它们本质上是一样的。 任何人都可以向我解释这个区别吗? 谢谢!

g代表全球范围,全球范围内代替:

在irb中:

 >> "hello".sub('l', '*') => "he*lo" >> "hello".gsub('l', '*') => "he**o" 

不同之处在于, sub仅replace指定模式的第一个匹配项,而gsub则替代了所有匹配项(即全局replace)。

 value = "abc abc" puts value # abc abc # Sub replaces just the first instance. value = value.sub("abc", "---") puts value # --- abc # Gsub replaces all instances. value = value.gsub("abc", "---") puts value # --- ---