今天我一直在阅读关于 String
的文档,看到了以前从未注意到的:sub
方法。我一直使用:gsub
,它们似乎基本相同。 有人能解释一下它们之间的区别吗? 谢谢!
String
的文档,发现了一个我之前没有注意到的方法 :sub
。我一直在使用 :gsub
,它们看起来基本相同。有人能告诉我它们之间的区别吗?谢谢!g
代表全局替换,即替换全部:
在irb中:
>> "hello".sub('l', '*')
=> "he*lo"
>> "hello".gsub('l', '*')
=> "he**o"
replace
和replaceAll
。但是Ruby的根源可以追溯到使用g
修饰符的Perl。这只是其中的一个事情。 - Ray Toalsub
比 gsub
快得多,这里有一个基准测试 https://github.com/JuanitoFatas/fast-ruby/blob/master/code/string/gsub-vs-sub.rb - blio=> " commas A, sentence, separated, by"```
你们有什么想法,为什么使用正则表达式组时,`gsub!`似乎只能找到/替换第一个实例?
- Bennett Talpers区别在于sub
只替换指定模式的第一个出现,而gsub
会替换所有出现的模式(即全局替换)。
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 # --- ---
sub
和gsub
分别执行第一个匹配和所有匹配的替换。
sub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,
fixed = FALSE, useBytes = FALSE)
gsub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,
fixed = FALSE, useBytes = FALSE)
sub("4", "8", "An Introduction to R Software Course will be of 4 weeks duration" )
##"An Introduction to R Software Course will be of 8 weeks duration"
gsub("4", "8", "An Introduction to R Software Course will be of 4 weeks duration" )
##"An Introduction to R Software Course will be of 8 weeks duration"