Yanıtlar:
Gsub'ınızda "\n"değil kullanmanız gerekir '\n'. Farklı tırnak işaretleri farklı davranır.
Çift tırnak ", karakter genişletmeye ve ifade enterpolasyonuna izin verir. \ngerçek değerlerini temsil etmek gibi kaçış kontrol karakterlerini kullanmanıza izin verirler, bu durumda, satırsonu ve #{expression}metin içinde istediğiniz herhangi bir yakut ifadesini ve değişkenleri örmek için kullanımına izin verirler .
Öte yandan, tek tırnaklar 'dizeyi tam anlamıyla ele alır, bu nedenle herhangi bir genişletme, değiştirme, enterpolasyon veya elinizde ne var.
Bu özel durumda, satırsonlarını silmek için ya .deleteda .trString yöntemini kullanmak daha iyidir .
trbu görev için daha iyi bir seçim olduğunu düşünüyorum , ancak dediğim gibi, cevap verdiğimde tek, çift tırnak arasındaki farkı belirtmenin daha iyi olacağını düşündüm.
Bir dizeyi değiştirmek yerine kaldırmak istediğinizde String#delete(veya onun mutatör eşdeğerini String#delete!) kullanabilirsiniz, örneğin:
x = "foo\nfoo"
x.delete!("\n")
x şimdi "foofoo" ya eşittir
Bu özel durumda String#delete, gsubdizeyi gerçekte hiçbir şeyle değiştirmediğinizden daha okunabilir .
deleteburada belirtildiği gibi yıkıcı değildir. Yeni bir dize döndürür.
Dizenizdeki tüm baştaki ve sondaki beyaz boşlukların kaldırılmasını istiyorsanız veya istemiyorsanız, stripyöntemi kullanabilirsiniz .
" hello ".strip #=> "hello"
"\tgoodbye\r\n".strip #=> "goodbye"
burada belirtildiği gibi .
düzenle Bu sorunun orijinal başlığı farklıydı. Cevabım orijinal soru için.
stripyalnızca baştaki ve sondaki boşlukları kaldırır: ruby-doc.org/core-1.9.3/String.html#method-i-strip-21
Bunun için bir normal ifadeye ihtiyacınız yok. Tr kullanın:
"some text\nandsomemore".tr("\n","")
replacesadece dizeyi, değişken atama gibi yenisiyle değiştirir; oysa tr, karakter karakter global bul ve değiştir.
Ruby'den kullanım chompveya stripişlevler:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
stripyalnızca baştaki ve sondaki boşluğu