Jawaban:
Anda harus menggunakan "\n"
bukan '\n'
di gsub Anda. Tanda kutip yang berbeda berperilaku berbeda.
Tanda kutip ganda "
memungkinkan perluasan karakter dan interpolasi ekspresi yaitu. mereka membiarkan Anda menggunakan karakter kontrol lolos seperti \n
untuk mewakili nilai sebenarnya, dalam hal ini, baris baru , dan memungkinkan penggunaan #{expression}
sehingga Anda dapat menenun variabel dan, yah, hampir semua ekspresi ruby yang Anda suka ke dalam teks.
Sementara di sisi lain, tanda kutip tunggal '
memperlakukan string secara harfiah, jadi tidak ada ekspansi, penggantian, interpolasi atau apa pun yang Anda miliki.
Dalam kasus khusus ini, lebih baik menggunakan metode .delete
atau .tr
String untuk menghapus baris baru .
tr
adalah pilihan yang lebih baik untuk tugas ini, tetapi seperti yang saya katakan, saya pikir lebih baik menunjukkan perbedaan dalam tanda kutip tunggal dan ganda ketika saya menjawab.
Saat Anda ingin menghapus string, daripada menggantinya, Anda dapat menggunakan String#delete
(atau setara mutatornya String#delete!
), misalnya:
x = "foo\nfoo"
x.delete!("\n")
x
sekarang sama dengan "foofoo"
Dalam kasus khusus String#delete
ini lebih mudah dibaca daripada gsub
karena Anda tidak benar-benar mengganti string dengan apapun.
delete
tidak merusak seperti yang ditunjukkan di sini. Ini mengembalikan string baru.
Jika Anda ingin atau tidak keberatan menghapus semua spasi di depan dan di belakang dari string Anda, Anda dapat menggunakan strip
metode ini.
" hello ".strip #=> "hello"
"\tgoodbye\r\n".strip #=> "goodbye"
seperti yang disebutkan di sini .
edit Judul asli untuk pertanyaan ini berbeda. Jawaban saya untuk pertanyaan awal.
strip
hanya menghapus spasi kosong di depan dan di belakang: ruby-doc.org/core-1.9.3/String.html#method-i-strip-21
Anda tidak membutuhkan ekspresi reguler untuk ini. Gunakan tr:
"some text\nandsomemore".tr("\n","")
replace
hanya mengubah string ke yang baru, seperti tugas variabel; sedangkan tr
karakter-demi-karakter menemukan dan mengganti global.
gunakan chomp
atau strip
fungsi dari Ruby:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
strip
hanya menghapus spasi kosong di depan dan di belakang - ruby-doc.org/core-1.9.3/String.html#method-i-strip-21