В чем разница между методами gsub и sub для Ruby Strings - PullRequest
96 голосов
/ 20 июля 2011

Сегодня я просматривал документацию по String и увидел метод :sub, который раньше никогда не замечал. Я использовал :gsub, и кажется, что они по сути одинаковы. Может кто-нибудь объяснить мне разницу? Спасибо!

Ответы [ 4 ]

183 голосов
/ 20 июля 2011

g обозначает глобальный, как и глобально (все):

В irb:

>> "hello".sub('l', '*')
=> "he*lo"
>> "hello".gsub('l', '*')
=> "he**o"
22 голосов
/ 20 июля 2011

Разница в том, что sub заменяет только первое вхождение указанного шаблона, тогда как gsub делает это для всех вхождений (то есть глобально заменяет).

0 голосов
/ 03 сентября 2018

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"
0 голосов
/ 11 апреля 2016
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                                # --- ---
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...