Bagaimana saya bisa membaca jeda baris dari nilai dengan JavaScript dan mengganti semua jeda baris dengan <br />
elemen?
Contoh:
Variabel lulus dari PHP seperti di bawah ini:
"This is man.
Man like dog.
Man like to drink.
Man is the king."
Saya ingin hasil saya terlihat seperti ini setelah JavaScript mengubahnya:
"This is man<br /><br />Man like dog.<br />Man like to drink.<br /><br />Man is the king."
javascript
Jin Yong
sumber
sumber
Jawaban:
Ini akan mengubah semua pengembalian menjadi HTML
Jika Anda bertanya-tanya apa?: Artinya. Ini disebut grup yang tidak menangkap. Ini berarti bahwa grup regex di dalam tanda kurung tidak akan disimpan dalam memori untuk direferensikan nanti. Anda dapat memeriksa utas ini untuk informasi lebih lanjut:
https://stackoverflow.com/a/11530881/5042169 https://stackoverflow.com/a/36524555/5042169
sumber
str.replace("\n", '<br />')
(argumen pertama adalah string biasa) akan menggantikan hanya kejadian pertama.String#replace
argumen pertamanya dariString
keRegExp
instance yang lolos , tanpa tanda.str.replace('\n', '<br />');
setara denganstr.replace(new RegExp('\n'), '<br />');
str.split("\n").join("<br />")
jsperf.com/split-join-vs-replace-regex RegEx tampaknya sedikit lebih cepatJika kekhawatiran Anda hanya menampilkan linebreak, Anda bisa melakukannya dengan CSS.
Jsfiddle: https://jsfiddle.net/5bvtL6do/2/
Catatan : Perhatikan pemformatan dan indentasi kode, karena
white-space: pre-line
akan menampilkan semua baris baru (kecuali baris baru terakhir setelah teks, lihat biola).sumber
white-space: pre-wrap;
saya lebih suka menggunakanwhite-space: pre-line;
(untuk tidak menambahkan garis istirahat akhir setelah semua)Tanpa regex:
sumber
\\n
tidak cocok dengan baris baru, karena sedang mencaribackslash
+n
.Ini berfungsi untuk input yang berasal dari textarea
sumber
Jika jawaban yang diterima tidak berfungsi untuk Anda, maka Anda dapat mencoba.
Ini berhasil untuk saya.
sumber
new RegExp('\n', 'g')
identik dengan/\n/g
(kecuali untuk beberapa hal kecil tentang penggunaan literal primitif versus konstruktornya)./\n/g
sebagai string!Terlepas dari sistem:
sumber
Penting juga untuk menyandikan sisa teks untuk melindungi dari kemungkinan serangan injeksi skrip
sumber
Ini bekerja untuk saya ketika nilai berasal dari TextBox:
sumber
Bagi Anda yang hanya ingin memperbolehkan maks. 2
<br>
berturut-turut, Anda dapat menggunakan ini:Baris pertama: Cari
\n
ATAU\r\n
di mana setidaknya 2 dari mereka berturut-turut, misalnya\n\n\n\n
. Kemudian gantilah dengan 2br
Baris kedua: Cari semua
\r\n
atau\n
ganti dengan<br>
sumber
jika Anda mengirim variabel dari PHP, Anda bisa mendapatkannya dengan ini sebelum mengirim:
sumber
str = str.replace(/\n/g, '<br>')
str = str.replace(/\n*\n/g, '<br>')
sumber
str = str.replace(/\n+/g, '<br>')
untuk kasus keduaTidak menjawab pertanyaan spesifik, tetapi saya yakin ini akan membantu seseorang ...
Jika Anda memiliki output dari PHP yang ingin Anda render di halaman web menggunakan JavaScript (mungkin hasil dari permintaan Ajax), dan Anda hanya ingin mempertahankan spasi putih dan pemisah baris, pertimbangkan untuk menyertakan teks di dalam
<pre></pre>
blok:sumber
Mencoba
sumber