Ben Ruby belgelerine okuyor ve arasındaki fark ile karıştı gsubve tr. İkisi arasındaki fark nedir?
Ben Ruby belgelerine okuyor ve arasındaki fark ile karıştı gsubve tr. İkisi arasındaki fark nedir?
Yanıtlar:
trTek karakterleri değiştirmek (tercüme etmek) istediğinizde kullanın .
trtek karakterlerle eşleşir (normal bir ifade aracılığıyla değil), bu nedenle karakterlerin ilk dize bağımsız değişkeninde aynı sırada olması gerekmez. Bir karakter bulunduğunda, ikinci dize bağımsız değişkeninde aynı dizinde bulunan karakterle değiştirilir:
'abcde'.tr('bda', '123')
#=> "31c2e"
'abcde'.tr('bcd', '123')
#=> "a123e"
Kullanın gsubEğer normal bir ifade kullanmak gerektiğinde ya da daha uzun alt dizeleri değiştirmek istediğinizde:
'abcde'.gsub(/bda/, '123')
#=> "abcde"
'abcde'.gsub(/b.d/, '123')
#=> "a123e"
tr, "karakterleri çevir" gibi "çevirmek" anlamına gelir, tam olarak yaptığı şey budur. Adını aynı adı taşıyan Unix yardımcı programından almıştır (belirsiz ve kısa adları ile bilinir).
tryalnızca tek bir karakteri tek bir sabit karakterle değiştirebilir (ancak bu türden birden çok eşleşmeyi tek bir trçağrıya koyabilirsiniz ) ancak hızlıdır.gsubregex kullanarak karmaşık kalıpları eşleştirebilir ve karmaşık bir hesaplama sonucuyla değiştirebilir, ancak daha yavaştır tr.trbirkaç kat daha hızlıdır gsub. İşte ne kadar hızlı trolabileceğine dair bir ölçüt gsub. github.com/JuanitoFatas/fast-ruby/blob/master/code/string/…
trstriçindeki karakterlerin from_stryerine karşılık gelen karakterlerin olduğu bir kopyasını döndürür to_str. Daha to_strkısa ise from_str, yazışmayı sürdürmek için son karakteri ile doldurulur.
http://apidock.com/ruby/String/tr
gsubstrikinci bağımsız değişken için değiştirilen tüm kalıp oluşumlarının bir kopyasını döndürür . Kalıp tipik olarak bir Regexp'dir; Dize olarak verilirse, içerdiği herhangi bir normal ifade meta karakterleri tam anlamıyla yorumlanacaktır, örneğin bir rakam yerine \dbir boşlukla ve ardından gelen boşlukla eşleşecektir d.
http://apidock.com/ruby/String/gsub