Ich habe die Dokumentation für String
heute durchgesehen und die :sub
Methode gesehen, die ich noch nie bemerkt hatte. Ich habe verwendet :gsub
und es scheint, dass sie im Wesentlichen gleich sind. Kann mir jemand den Unterschied erklären? Vielen Dank!
111
Antworten:
Das
g
steht für global, wie in global ersetzen (alle):In irb:
quelle
replace
undreplaceAll
. Aber Ruby hat seine Wurzeln in Perl, das deng
Modifikator verwendet. Es ist nur eines dieser Dinge.sub
ist viel schneller alsgsub
, es gibt hier einen Benchmark github.com/JuanitoFatas/fast-ruby/blob/master/code/string/…A, sentence, separated, by, commas".gsub!(/(.*),(.*)/,"\\2 \\1") => " commas A, sentence, separated, by"
Irgendwelche Gedanken, warumgsub!
nur die erste Instanz zu finden / zu ersetzen scheint, wenn Regex-Gruppen verwendet werden?Der Unterschied besteht darin, dass
sub
nur das erste Vorkommen des angegebenen Musters ersetzt wird, währendgsub
dies bei allen Vorkommen der Fall ist (dh es wird global ersetzt).quelle
quelle
sub
undgsub
ersetzen Sie das erste bzw. alle Übereinstimmungen.quelle