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. \n
gerç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 .delete
da .tr
String yöntemini kullanmak daha iyidir .
tr
bu 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
, gsub
dizeyi gerçekte hiçbir şeyle değiştirmediğinizden daha okunabilir .
delete
burada 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, strip
yö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.
strip
yalnı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","")
replace
sadece dizeyi, değişken atama gibi yenisiyle değiştirir; oysa tr
, karakter karakter global bul ve değiştir.
Ruby'den kullanım chomp
veya strip
işlevler:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
strip
yalnızca baştaki ve sondaki boşluğu