a = "foobarfoobarhmm"
Yakut - Ben ` "fooBARfoobarhmm" sadece "bar" ilk olay "BAR" ile değiştirilmesi gerekir</p> <p>yani olarak çıktı istediğiniz başka dize
bir alt dize ilk geçtiği değiştirin.
a = "foobarfoobarhmm"
Yakut - Ben ` "fooBARfoobarhmm" sadece "bar" ilk olay "BAR" ile değiştirilmesi gerekir</p> <p>yani olarak çıktı istediğiniz başka dize
bir alt dize ilk geçtiği değiştirin.
Kullanım #sub
:
a.sub('bar', "BAR")
String#sub
Yossi zaten dediğim gibi sen ne ihtiyaç vardır. Daha hızlı beri Ama, bunun yerine bir RegExp kullanmak:
a = 'foobarfoobarhmm'
output = a.sub(/foo/, 'BAR')
Sadece bir kıyaslama yaptım ve regex, alt için parametre olarak bir dize kullanarak% 50 daha uzun sürüyor. –
Kontrol ettim ve Regexp sürümü daha hızlı. MRI 1.9.2, 1.9.3, 2.0.0 ve hatta JRuby kullandım, hepsi Regexp versiyonunda daha hızlı. Karşılaştırma kodu: https://gist.github.com/tbuehlmann/5574713 Karşılaştırma ölçütünüzü belirtmek ister misiniz? – tbuehlmann
Hmmmm. İddialarım için özür dilemeliyim, benim referansımda bir hata yaptım. Regex aslında daha hızlıdır. –
ilk geçtiği yerine, sadece bunu:
str = "I have 20 dollars"
str[/\d+/] = 500.to_s
# will give 'I have 500 dollars'
'500.to_s' bazen“ 500 ”' yazılır. :-) –
Bunu kasıtlı olarak yazdım. Açık bir dize atamanız gerektiğini belirtmek için. Çünkü dönüşüm burada otomatik değil. Bunu yerine str [/ \ d + /] = 500' yaparsanız, bir hata alırsınız 'TypeError: Fixnum'un String'e dolaylı bir dönüşümü yoktur. –
: hatta normal ifadeleri kullanabilirsiniz
teşekkür! tüm oluşumları yerine gsub() kullanıyordum. – Sayuj