Fasilitas Java 13 multi-line text block dengan """
pembatas menjadi terkenal.
Namun saya memiliki kebutuhan berulang di mana saya membutuhkan seluruh paragraf tanpa baris baru yang disematkan.
Dengan kata lain, cuplikan kode berikut:
String paragraph =
"""
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
""""
System.out.println(paragraph);
menghasilkan yang berikut, seperti yang Anda harapkan:
aaaa bbbb cccc
dddd eeee ffff
gggg hhhh iiii
... yang biasanya sangat berguna. Namun dalam kasus saya, untuk paragraf yang sangat besar saya membutuhkannya untuk menghasilkan ini:
aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii
(.... dan urus alur teks nanti.)
Apakah ada cara untuk membuat parameter "no-newline" untuk fitur triple-quote?
java
string
java-13
preview-feature
kehidupan
sumber
sumber
"line" + "line" + "line"
, dll, dan tanpa EOL ini muncul. Menghindari sintasan dan kesulitan mempertahankan sintaksis sepenuhnya merupakan titik di belakang"""
.Jawaban:
Para perancang fitur ini juga menyadari persyaratan ini (lihat 'Urutan pelarian baru' di JEP368). Jadi, dengan build akses awal terbaru untuk JDK 14 Anda dapat menggunakan trailing
\
untuk keluar dari baris baru di akhir baris:Cetakan:
sumber
"aaaa bbbb cccc "
,+"dddd eeee ffff "
dan+"gggg hhhh iiii "
, masing-masing dalam garis yang berbeda ...\n
, masih berfungsi di blok teks.readString
, sumber daya yang tertanam jauh lebih mudah untuk ditangani. Saya tidak pernah ingin mengintegrasikan seluruh paragraf ke dalam kode sumber, hanya hal-hal I / O yang mengganggu.Anda dapat menggunakan
String.lines
diperkenalkan sejak Java-11 sebagai:Gratis dan apa pun yang sepadan, berikut adalah cuplikan layar dari eksekusi JShell dari dua blok kode yang berbeda:
sumber
String output = paragraph.replaceAll("[\n\r]", "");
\s
di"""
blok) memungkinkan saya untuk mencampurkan garis-garis EOL-kurang dengan garis-garis di mana saya benar-benar ingin pengembalian yang keras (seperti antara paragraf, dll.)Memang, menemukan jawaban yang baik di Java 13 tidak mudah (mungkin bahkan tidak mungkin) tapi saya pikir Jorn Vernee menjawab kekhawatiran itu dengan anggun dalam jawabannya (urutan pelarian baru di Jawa 14 memberikan solusi yang dapat diterima).
Untuk memperluas beberapa kekhawatiran yang terdaftar:
Catatan untuk moderator: Saya tahu bahwa jawaban ini berpotensi melanggar pedoman (saya tidak menjawab pertanyaan dan saya membalas komentar pengguna lain), tapi saya pikir harus ada ruang untuk debat untuk topik yang masih dalam proses (jangan lupa bahwa blok teks dalam mode 'pratinjau kedua' ).
sumber
paragraph.replaceAll("\\n","")
harus melakukan pekerjaan untuk Anda.sumber
""" line line line """.replaceAll("\\n","");
tidak bisa memverifikasinya sekarang.\s
kemampuan JDK-14. Bagaimana jika saya ingin beberapa paragraf tanpa jeda baris, tetapi jeda baris di antara mereka.