Templat String Kotlin

1. Gambaran keseluruhan

Dalam tutorial ini, kami akan menerangkan apakah templat Kotlin's String dan bagaimana menggunakannya.

Untuk mengetahui ciri lain dan mengetahui cara menggunakan Kotlin, lihat salah satu tutorial Kotlin kami.

2. Rentetan di Kotlin

Seperti di Jawa, Strings di Kotlin tidak berubah. Itu bermaksud bahawa kita tidak mempunyai cara untuk mengubah String setelah ia dibuat. Walau bagaimanapun, kami mungkin memperoleh String lain dari yang tertentu.

Kotlin telah memperkaya kelas Java String dengan fungsi tambahan.

Sebagai contoh, kaedah padEnd () membolehkan kita memformat String, sehingga ungkapan:

"Hello".padEnd(10, '!')

Yang menghasilkan rentetan baru "Hello !!!!!" .

3. Templat Rentetan

Templat rentetan adalah literal String yang mengandungi ungkapan tertanam.

Contohnya, kod ini di Java:

String message = "n = " + n;

Di Kotlin hanya:

val message = "n = $n"

Sebarang ungkapan Kotlin yang sah boleh digunakan dalam templat String :

val message = "n + 1 = ${n + 1}"

Tidak seperti Java, banyak konstruksi Kotlin (tetapi pastinya tidak semua) adalah ungkapan .

Oleh itu, templat String mungkin mengandungi logik juga:

val message = "$n is ${if(n > 0) "positive" else "not positive"} 

Perhatikan bahawa di dalam kurungan keriting terdapat ekspresi Kotlin yang sah. Ini adalah sebab mengapa kita tidak terlepas dari petikan berganda bersarang.

String templat diselesaikan dengan menilai ekspresi dan menggunakan kaedah toString () pada hasil penilaian.

Templat rentetan boleh bersarang:

val message = "$n is ${if (n > 0) "positive" else if (n < 0) "negative and ${if (n % 2 == 0) "even" else "odd"}" else "zero"}"

The String template penghurai bermula untuk menyelesaikannya dari template yang paling bersarang, menilai dan menyembah yang toString () kaedah di atasnya.

Walaupun templat String mungkin bersarang, ada baiknya memilikinya sesederhana mungkin. Ini sama sekali tidak sukar kerana Kotlin menyediakan kami banyak alat berguna.

Bagaimana jika kita mahu menggunakan tanda dolar mentah dan bukan sebagai sebahagian daripada templat String ?

Kemudian kita melepaskannya dengan meletakkan garis miring terbalik di hadapannya:

val message = "n = \$n"

Apa yang mengikuti tanda dolar menjadi Rentetan biasa - ia tidak dinilai lagi dan ditafsirkan sebagaimana adanya .

4. Rentetan Mentah

Di Kotlin, kami juga mempunyai String mentah yang disebut tiga kali ganda yang dapat memuat watak khas tanpa perlu melarikan diri.

String yang terhasil terkandung di antara dua kejadian bertanda ganda-petikan-tanda yang tidak bertindih berturut-turut .

Sebagai contoh, di Java, untuk membuat String dengan betul yang mengandungi jalan fail gaya Windows ke sumber yang terletak di C: \ Repository \ read.me, kita harus menentukannya dengan cara ini:

String path = "C:\\Repository\\read.me"

Di Kotlin, kami mungkin menggunakan notasi petikan tiga untuk mencapai hasil yang sama:

val path = """C:\Repository\read.me"""

Kami mungkin menggunakan notasi ini untuk membuat Rentetan berbilang baris :

val receipt = """Item 1: $1.00 Item 2: $0.50"""

Yang mencipta String yang merangkumi tepat dua garis. Sekiranya kita lebih suka lekukan ini:

val receipt = """Item 1: $1.00 >Item 2: $0.50""".trimMargin(">")

Kami menggunakan kaedah trimMargin () yang menghilangkan ruang putih akhirnya dari awal setiap baris hingga kejadian pertama awalan margin ( > dalam contoh di atas).

Rentetan petikan tiga tidak menyokong sebarang urutan pelarian . Ini bermaksud bahawa jika kita menulis

val receipt = """Item 1: $1.00\nItem 2: $0.50"""

untuk mendapatkan Rentetan dua baris , kita akan mendapat satu baris yang mengandungi watak \ n dan bukannya jangkaan pemecahan baris.

Tiga-dipetik Strings melakukan sokongan template walaupun.

Ini bermaksud bahawa sebarang urutan yang dimulai dengan tanda dolar diselesaikan menjadi rentetan dengan cara seperti yang telah kita jelaskan di bahagian sebelumnya. Kami mungkin menggunakan fakta ini untuk menjadikan watak pelarian berfungsi:

val receipt = """Item 1: $1.00${"\n"}Item 2: $0.50"""

5. Kesimpulan

Dalam artikel ini, kami telah mempertimbangkan satu ciri bahasa Kotlin yang tidak ada di templat Java - String . Kami telah menggambarkan penggunaannya sekiranya terdapat String biasa dan berbilang baris .

Anda mungkin menemui semua coretan kod yang disebutkan di sini di repositori kami di GitHub.