Ich habe die Ruby-Dokumentation gelesen und war verwirrt über den Unterschied zwischen gsubund tr. Was ist der Unterschied zwischen den beiden?
Ich habe die Ruby-Dokumentation gelesen und war verwirrt über den Unterschied zwischen gsubund tr. Was ist der Unterschied zwischen den beiden?
Antworten:
Verwenden trSie diese Option, wenn Sie einzelne Zeichen ersetzen (übersetzen) möchten.
trÜbereinstimmungen mit einzelnen Zeichen (nicht über einen regulären Ausdruck), daher müssen die Zeichen im ersten Zeichenfolgenargument nicht in derselben Reihenfolge vorkommen. Wenn ein Zeichen gefunden wird, wird es durch das Zeichen ersetzt, das im zweiten Zeichenfolgenargument am selben Index gefunden wird:
'abcde'.tr('bda', '123')
#=> "31c2e"
'abcde'.tr('bcd', '123')
#=> "a123e"
Verwenden gsubSie diese Option, wenn Sie einen regulären Ausdruck verwenden müssen oder wenn Sie längere Teilzeichenfolgen ersetzen möchten:
'abcde'.gsub(/bda/, '123')
#=> "abcde"
'abcde'.gsub(/b.d/, '123')
#=> "a123e"
trbedeutet "übersetzen", wie in "Zeichen übersetzen", was genau das ist, was er tut. Es ist nach dem gleichnamigen Unix-Dienstprogramm benannt (das für seine obskuren und kurzen Namen bekannt ist).
trkann nur ein einzelnes Zeichen durch ein einzelnes festes Zeichen ersetzen (obwohl Sie mehrere Übereinstimmungen dieser Art in einem einzigen trAufruf platzieren können), ist aber schnell.gsubkann komplizierte Muster mit Regex abgleichen und durch ein kompliziertes Berechnungsergebnis ersetzen, ist aber langsamer als tr.trmehrmals schneller sind als gsub. Hier ist ein Benchmark, wie schnell als sein trkönnte gsub. github.com/JuanitoFatas/fast-ruby/blob/master/code/string/…
trGibt eine Kopie von zurück, strwobei die Zeichen in from_strdurch die entsprechenden Zeichen in ersetzt werden to_str. Wenn to_stres kürzer als ist from_str, wird es mit seinem letzten Zeichen aufgefüllt, um die Entsprechung aufrechtzuerhalten.
http://apidock.com/ruby/String/tr
gsubGibt eine Kopie von zurück, strwobei alle Vorkommen von Mustern das zweite Argument ersetzen. Das Muster ist normalerweise ein Regexp; Wenn es als Zeichenfolge angegeben wird, werden alle darin enthaltenen Metazeichen für reguläre Ausdrücke wörtlich interpretiert, z. B. \dstimmen sie mit einem Spiel überein, gefolgt von deiner Ziffer.
http://apidock.com/ruby/String/gsub