Katakanlah Anda memiliki literal String dengan banyak tanda kutip di dalamnya. Anda bisa lolos dari semuanya, tapi itu menyebalkan, dan sulit dibaca.
Dalam beberapa bahasa, Anda bisa melakukan ini:
foo = '"Hello, World"';
Di Java, bagaimanapun, ''
digunakan untuk char
s, jadi Anda tidak dapat menggunakannya untuk String
s dengan cara ini. Beberapa bahasa memiliki sintaks untuk mengatasi ini. Misalnya, di python, Anda dapat melakukan ini:
"""A pretty "convenient" string"""
Apakah Java memiliki sesuatu yang serupa?
System.out.println(mapperObj.writeValueAsString(mapperObj.readValue(str, Object.class)));
Jawaban:
Jawabannya tidak, dan buktinya ada di Spesifikasi Bahasa Java :
Seperti yang Anda lihat,
StringLiteral
hanya bisa terikat oleh"
dan tidak dapat berisi karakter khusus tanpa pelarian ..Catatan tambahan: Anda dapat menanamkan Groovy di dalam proyek Anda, ini akan memperluas sintaks Java yang memungkinkan Anda untuk menggunakannya
'''multi line string '''
,' "string with single quotes" '
dan juga"string with ${variable}"
.sumber
Tidak, dan saya selalu kesal dengan kurangnya sintaks string-literal yang berbeda di Java.
Inilah trik yang saya gunakan dari waktu ke waktu:
Saya terutama hanya melakukan sesuatu seperti itu untuk bidang statis. Karena statis, kode ganti-string dipanggil sekali, setelah inisialisasi kelas. Jadi hukuman kinerja runtime praktis tidak ada, dan itu membuat kode jauh lebih terbaca.
sumber
Perbarui Des 2018 (12 bulan kemudian):
Literal string mentah (yang ada di daftar amber ) tidak akan sampai ke JDK 12.
Lihat kritiknya di sini .
Mungkin ada versi Java yang akan datang (10 atau lebih).
Lihat JEPS 8196004 dari Januari 2018: ( "JEP" adalah "Program Peningkatan JDK" )
Jadi, alih-alih:
Anda akan bisa mengetik:
Rapi!
Tapi itu masih sebatas draft : perlu di-posting, diajukan, menjadi kandidat, dan didanai, sebelum diselesaikan dan dibawa ke JDK berikutnya.
sumber
Jawaban sederhana: Tidak.
Untuk string yang lebih panjang yang harus di-escape, saya biasanya membacanya dari beberapa sumber eksternal.
sumber
Anda juga dapat menggunakan StringEscapeUtils dari apache commons
UPDATE : Jika seseorang tertarik dengan beberapa contoh, berikut ini tautan yang berguna: https://dzone.com/articles/commons-lang-3-improved-and-powerful-StringEscapeUtils
sumber
String
s, jadi tidak ada cara untuk memiliki nilai yang diformat dengan baik dalam kode Anda. Agaknya Anda dapat menggunakan metode ini untuk membaca dari file menjadi aString
, tapi saya rasa bukan itu pertanyaannya di sini.Berikut ini tampaknya berhasil untuk saya:
Saya pikir karena char adalah tipe variabel primitif untuk String, String dan karakter dapat digabungkan (setidaknya compiler eclipse sepertinya tidak mengeluh).
sumber
Jika Anda ingin melarikan diri
'
atau"
dalam string Anda, Anda dapat menggunakan kode berikut:sumber