Kotlin String Templates

1. Übersicht

In diesem Tutorial erklären wir, was Kotlins String- Vorlagen sind und wie man sie verwendet.

Schauen Sie sich eines unserer Kotlin-Tutorials an, um sich mit anderen Funktionen vertraut zu machen und zu wissen, wie man Kotlin verwendet.

2. Saiten in Kotlin

Wie in Java sind Strings in Kotlin unveränderlich. Das bedeutet, dass wir keine Möglichkeit haben, einen String nach seiner Erstellung zu ändern . Wir können jedoch einen anderen String von einem bestimmten ableiten .

Kotlin hat die Java String- Klasse mit zusätzlichen Funktionen erweitert.

Mit der Methode padEnd () können wir beispielsweise einen String so formatieren , dass der Ausdruck:

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

Welches erzeugt eine neue Zeichenfolge "Hallo !!!!!" .

3. String-Vorlagen

String-Vorlagen sind String- Literale, die eingebettete Ausdrücke enthalten.

Zum Beispiel dieser Code in Java:

String message = "n = " + n;

In Kotlin ist nur:

val message = "n = $n"

Jeder gültige Kotlin-Ausdruck kann in einer String- Vorlage verwendet werden:

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

Im Gegensatz zu Java sind viele Kotlin-Konstrukte (aber sicherlich nicht alle) Ausdrücke .

Daher kann eine String- Vorlage auch Logik enthalten:

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

Beachten Sie, dass sich in den geschweiften Klammern ein gültiger Kotlin-Ausdruck befindet. Dies ist ein Grund, warum wir uns den verschachtelten doppelten Anführungszeichen nicht entziehen.

Zeichenfolgenvorlagen werden aufgelöst, indem der Ausdruck ausgewertet und eine toString () -Methode für das Ergebnis der Auswertung aufgerufen wird.

Zeichenfolgenvorlagen können verschachtelt werden:

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

Der String- Vorlagenparser beginnt mit der Auflösung aus der am meisten verschachtelten Vorlage, wertet sie aus und ruft eine toString () -Methode auf.

Obwohl die String- Vorlagen möglicherweise verschachtelt sind, ist es eine gute Idee, sie so einfach wie möglich zu gestalten. Dies ist überhaupt nicht schwierig, da Kotlin uns viele nützliche Werkzeuge zur Verfügung stellt.

Was ist, wenn wir ein rohes Dollarzeichen verwenden möchten und nicht als Teil einer String- Vorlage?

Dann entkommen wir ihm, indem wir einen Backslash davor setzen:

val message = "n = \$n"

Was auf das Dollarzeichen folgt, wird zu einem normalen String - es wird nicht mehr ausgewertet und so interpretiert, wie es ist.

4. Rohe Saiten

In Kotlin haben wir außerdem dreifach zitierte Rohzeichenfolgen, die Sonderzeichen enthalten können, ohne dass Sie ihnen entkommen müssen.

Der resultierende String ist zwischen zwei aufeinanderfolgenden nicht-überlappenden Vorkommen von triple doppelten Anführungszeichen-Zeichen enthalten .

Um beispielsweise in Java einen String mit einem Dateipfad im Windows-Stil zu einer Ressource unter C: \ Repository \ read.me ordnungsgemäß zu erstellen , sollten Sie ihn folgendermaßen definieren:

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

In Kotlin können wir die dreifach zitierte Notation verwenden, um das gleiche Ergebnis zu erzielen:

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

Wir können diese Notation verwenden, um einen mehrzeiligen String zu erstellen :

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

Dadurch wird ein String erstellt , der genau zwei Zeilen umfasst. Wenn wir diesen Einzug bevorzugen:

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

Wir verwenden eine trimMargin () -Methode, die eventuelle Leerzeichen vom Anfang jeder Zeile bis zum ersten Auftreten des Randpräfixes eliminiert ( > im obigen Beispiel).

Zeichenfolgen mit dreifachen Anführungszeichen unterstützen keine Escape-Sequenzen . Es bedeutet, wenn wir geschrieben haben

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

Um einen zweizeiligen String zu erhalten, erhalten wir eine einzelne Zeile mit den Zeichen \ n anstelle des erwarteten Zeilenumbruchs.

Strings mit dreifachen Anführungszeichen unterstützen jedoch das Templating.

Dies bedeutet, dass jede Sequenz, die mit dem Dollarzeichen beginnt, auf eine Weise in eine Zeichenfolge aufgelöst wird, wie wir es im vorherigen Abschnitt beschrieben haben. Wir können diese Tatsache nutzen, damit die Escape-Zeichen funktionieren:

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

5. Schlussfolgerung

In diesem Artikel haben wir eine Funktion der Kotlin-Sprache betrachtet, die in Java- String- Vorlagen nicht vorhanden ist. Wir haben ihre Verwendung bei üblichen und mehrzeiligen Strings veranschaulicht .

Möglicherweise finden Sie alle hier erwähnten Codefragmente in unserem Repository auf GitHub.