Šablóny reťazcov Kotlin

1. Prehľad

V tomto návode vysvetlíme, čo je Kotlin String šablóny sú a ako ich používať.

Aby ste sa oboznámili s ďalšími funkciami a vedeli, ako používať Kotlin, pozrite si jeden z našich výukových programov Kotlin.

2. Struny v Kotline

Rovnako ako v Jave, Struny v Kotline sú nemenné. To znamená, že nemáme žiadne prostriedky na zmenu a String akonáhle sa vytvorí. Možno však odvodíme inú String z daného.

Kotlin obohatil Javu String triedy s ďalšou funkcionalitou.

Napríklad metóda padEnd () umožňuje nám formátovať a Reťazec, takže výraz:

„Dobrý deň“ .padEnd (10, '!')

Ktorý vytvorí nový reťazec "Ahoj!!!!!".

3. Šnúrové šablóny

Šnúrkové šablóny sú String literály, ktoré obsahujú vložené výrazy.

Napríklad tento kód v Jave:

Reťazcová správa = "n =" + n;

V Kotline je len:

val message = "n = $ n"

Akýkoľvek platný Kotlinov výraz sa môže použiť v a String šablóna:

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

Na rozdiel od Javy sú mnohé Kotlinove konštrukty (ale určite nie všetky) výrazy.

Preto a String šablóna môže obsahovať aj logiku:

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

Všimnite si, že vo vnútri zložených zátvoriek je platný Kotlinov výraz. To je dôvod, prečo sa nevyhneme vnoreným dvojitým úvodzovkám.

String šablóny sa vyriešia vyhodnotením výrazu a vyvolaním a natiahnuť() o výsledku hodnotenia.

String šablóny môžu byť vnorené:

val message = "$ n je $ {if (n> 0)" kladné "else if (n <0)" záporné a $ {if (n% 2 == 0) "párne" else "odd"} "else" nula "}"

The String syntaktický analyzátor šablón ho začne riešiť od najviac vnorenej šablóny, vyhodnotí ju a vyvolá a natiahnuť() metóda na to.

Aj keď String šablóny môžu byť vnorené, je dobré mať ich čo najjednoduchšie. To nie je vôbec ťažké, pretože Kotlin nám poskytuje mnoho užitočných nástrojov.

Čo ak chceme použiť surový znak dolára a nie ako súčasť a String šablóna?

Potom mu unikneme tak, že pred neho vložíme spätné lomítko:

val message = "n = \ $ n"

To, čo nasleduje po znaku dolára, sa stáva obvyklým String - už sa nehodnotí a interpretuje sa tak, ako je.

4. Surové struny

V Kotline máme navyše trikrát citované surové reťazce, ktoré môžu obsahovať špeciálne znaky bez toho, aby ste museli uniknúť.

Výsledný String je obsiahnutý medzi dvoma po sebe nasledujúcimi neprekrývajúcimi sa výskytmi trojitých znakov úvodzoviek .

Napríklad v Jave, aby bolo možné správne vytvoriť a String obsahujúca cestu k systému v štýle Windows k prostriedku umiestnenému na C: \ Repository \ read.me, mali by sme to definovať takto:

Cesta reťazca = "C: \ Repository \ read.me"

V Kotline môžeme na dosiahnutie rovnakého výsledku použiť trojitú notáciu:

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

Túto notáciu môžeme použiť na vytvorenie viacriadkového Reťazec:

val príjem = "" "Položka 1: 1,00 USD Položka 2: 0,50 $" ""

Čo vytvára a String ktorý zaberá presne dva riadky. Ak uprednostňujeme toto odsadenie:

val príjem = "" "Položka 1: 1,00 USD> Položka 2: 0,50 USD" "". trimMargin (">")

Používame a trimMargin () metóda, ktorá eliminuje prípadné biele miesta od začiatku každého riadku až po prvý výskyt predpony okraja (> v príklade vyššie).

Reťazce s trojitým citátom nepodporujú žiadne únikové sekvencie. Znamená to, že keby sme písali

val príjem = "" "Položka 1: 1,00 $ \ nPoložka 2: 0,50 $" ""

za účelom získania dvojriadku Reťazec, dostali by sme jeden riadok obsahujúci znaky \ n namiesto očakávaného zlomu riadku.

Citované trikrát Struny Podporujte však šablóny.

Znamená to, že akákoľvek sekvencia začínajúca znakom dolára bude vyriešená na reťazec spôsobom, ako sme opísali v predchádzajúcej časti. Túto skutočnosť môžeme použiť, aby únikové postavy fungovali:

val príjem = "" "Položka 1: $ 1,00 $ {" \ n "} Položka 2: 0,50 $" ""

5. Záver

V tomto článku sme zvážili jednu vlastnosť jazyka Kotlin, ktorá v Jave absentuje - String šablóny. Ich použitie sme ilustrovali v prípade obvyklých a viacriadkových liniek Struny.

Všetky útržky kódu, ktoré sú tu uvedené, nájdete v našom úložisku na GitHub.


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