Kotlin karakterlánc sablonok

1. Áttekintés

Ebben az oktatóanyagban elmagyarázzuk, mi Kotlin Húr sablonok és hogyan kell használni őket.

A többi funkció megismerése és a Kotlin használatának megismerése érdekében tekintse meg egyik Kotlin oktatóanyagunkat.

2. Vonósok Kotlinban

Mint a Java-ban, Húrok Kotlinban megváltoztathatatlanok. Ez azt jelenti, hogy nincs módunk megváltoztatni a Húr ha létrejön. Lehet azonban levezetni egy másikat is Húr egy adottból.

Kotlin gazdagította a Java-t Húr osztály további funkcionalitással.

Például a módszer padEnd () lehetővé teszi, hogy formázzuk a Húr, hogy a kifejezés:

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

Ami új húrot állít elő "Helló!!!!!".

3. Karakterlánc-sablonok

A karakterlánc sablonok Húr beágyazott kifejezéseket tartalmazó literálok.

Például ez a Java kód:

Karakterlánc = "n =" + n;

Kotlinban csak:

val üzenet = "n = $ n"

Bármely érvényes Kotlin kifejezés felhasználható a Húr sablon:

val üzenet = "n + 1 = $ {n + 1}"

A Java-val ellentétben Kotlin sok konstrukciója (de természetesen nem minden) kifejezés.

Ezért a Húr a sablon tartalmazhat logikát is:

val message = "$ n is $ {if (n> 0)" pozitív "más" nem pozitív "} 

Vegye figyelembe, hogy a göndör zárójelben érvényes Kotlin kifejezés található. Ez az oka annak, hogy nem kerüljük el a beágyazott kettős idézeteket.

Húr a sablonokat a kifejezés kiértékelésével és az a meghívásával oldjuk meg toString () módszer az értékelés eredményére.

Húr sablonok beágyazhatók:

val üzenet = "$ n = $ {if (n> 0)" pozitív "else if (n <0)" negatív és $ {if (n% 2 == 0) "even" else "furcsa"} "else" nulla"}"

A Húr a sablon elemző a legtöbbet beágyazott sablonból kezdi megoldani, kiértékeli és meghívja a toString () módszer rajta.

Bár a Húr a sablonok beágyazódhatnak, célszerű a lehető legegyszerűbbek. Ez egyáltalán nem nehéz, mert Kotlin számos hasznos eszközt biztosít számunkra.

Mi van, ha nyers dollárjelet akarunk használni, és nem az a részeként Húr sablon?

Aztán úgy menekülünk el, hogy egy visszavágót helyezünk elé:

val message = "n = \ $ n"

Ami a dollárjelet követi, az megszokottá válik Húr - már nem értékelik és értelmezik.

4. Nyers húrok

Kotlinban emellett háromszor idézett nyers karakterláncokkal rendelkezünk, amelyek speciális karaktereket tartalmazhatnak, anélkül, hogy el kellene menekülniük tőlük.

A kapott Húr a tripla kettős idézőjel két egymást követő, egymást nem átfedő előfordulása között található .

Például Java-ban a megfelelő létrehozás érdekében a Húr a Windows-stílusú fájl elérési útját tartalmazza a C: \ Repository \ read.me, így kell meghatároznunk:

Karakterlánc útvonala = "C: \ Tárház \ read.me"

Kotlinban a háromszor idézett jelölést használhatjuk ugyanazon eredmény elérése érdekében:

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

Ezt a jelölést felhasználhatjuk egy többsoros vonal létrehozására Húr:

val nyugta = "" "1. tétel: 1,00 USD 2. tétel: 0,50 USD" ""

Ami létrehozza a Húr hogy pontosan két sort ölel át. Ha ezt a behúzást részesítjük előnyben:

val nyugta = "" "1. tétel: $ 1.00> 2. tétel: $ 0.50" "". trimMargin (">")

Használjuk a trimMargin () módszer, amely kiküszöböli az esetleges fehér tereket minden sor elejétől a margó előtag első előfordulásáig (> a fenti példában).

A háromszor idézett karakterláncok nem támogatnak semmilyen menekülési szekvenciát. Ez azt jelenti, hogy ha írtunk

val nyugta = "" "1. tétel: $ 1.00 \ n2. tétel: $ 0.50" ""

kétsoros megszerzése érdekében Húr, egyetlen sort kapnánk a karakterekből \ n a várt sortörés helyett.

Háromszoros idézet Húrok ne támogassa a sablonokat.

Ez azt jelenti, hogy a dollárjellel kezdődő szekvenciák az előző szakaszban leírt módon karakterláncokká válnak. Ezt a tényt felhasználhatjuk a menekülési karakterek működéséhez:

val nyugta = "" "1. tétel: $ 1.00 $ {" \ n "} 2. tétel: $ 0.50" ""

5. Következtetés

Ebben a cikkben a Kotlin nyelv egyik olyan tulajdonságát vettük figyelembe, amely hiányzik a Java-ból - Húr sablonok. Szemléltettük használatukat szokásos és többsoros esetén Húrok.

Az itt említett összes kódrészlet megtalálható a GitHub tárhelyén.


$config[zx-auto] not found$config[zx-overlay] not found