Die Magie der Strings: Warum Formatierung in Kotlin eine Kunst ist
\n\nStellen Sie sich vor: Sie schreiben eine App zur Verfolgung von Sporttrainings. Sie müssen eine Nachricht ausgeben: "Hallo, Alexei! Ihre Zeit: 42,5 km in 2:15:07. Das beste Ergebnis ist 3,2% besser.". Wenn Sie einen solchen String durch Konkatenation (Verkettung) im Java-Stil zusammenbauen, wird der Code zu einem Chaos aus Pluszeichen und Anführungszeichen. String-Formatierung in Kotlin löst dieses Problem elegant und leistungsstark.
\n\nIn diesem Artikel betrachten wir 5 Ansätze zur Kotlin String-Formatierung. Sie erfahren, wann Sie Interpolation, wann den guten alten String.format() und wann fortgeschrittene Vorlagen verwenden sollten. Los geht's!
1. String-Interpolation: Das tägliche Brot von Kotlin
\n\nDie beliebteste und einfachste Technik ist die String-Interpolation in Kotlin. Sie ist direkt in die Sprache integriert: Verwenden Sie das Dollarzeichen $ zum Einfügen einer Variable und ${} für Ausdrücke.
val name = "Anna"\nval age = 28\nval message = "Ich heiße $name und bin $age Jahre alt."\nprintln(message) // Ich heiße Anna und bin 28 Jahre alt.\n\n// Ausdrücke mit geschweiften Klammern\nval price = 49.99\nval discount = 0.2\nval finalPrice = "Preis mit Rabatt: ${price * (1 - discount)} Rubel."\nprintln(finalPrice) // Preis mit Rabatt: 39.992 Rubel.\n\nVorteile: Lesbarkeit, Geschwindigkeit, keine zusätzlichen Aufrufe. Nachteile: Keine Kontrolle über das Zahlenformat (z. B. Anzahl der Nachkommastellen).
\n\nWann verwenden
\n- \n
- Einfache Nachrichten, Logs, UI-Texte \n
- Wenn keine genaue Formatierung von Zahlen oder Daten erforderlich ist \n
- Innerhalb von
println()oderStringBuilder\n
2. String.format(): Das Java-Erbe in Kotlin
\n\nWenn Sie die Kontrolle über das Format benötigen, hilft String.format() in Kotlin. Es ist eine direkte Brücke zur Java-Methode String.format() mit denselben Formatspezifizierern (%s, %d, %.2f).
val pi = 3.1415926535\nval formatted = String.format("Zahl π mit drei Stellen: %.3f", pi)\nprintln(formatted) // Zahl π mit drei Stellen: 3.142\n\n// Mehrere Argumente\nval name = "Ivan"\nval score = 95\nval result = String.format("%s hat %d von 100 Punkten erreicht", name, score)\nprintln(result) // Ivan hat 95 von 100 Punkten erreicht\n\nEin wichtiger Punkt: Die Kotlin String.format-Formatierung ist nicht typsicher – wenn Sie den falschen Typ übergeben, erhalten Sie eine Laufzeitausnahme. Für eine statische Prüfung verwenden Sie Kotlin-spezifische Methoden (siehe Abschnitt 5).
\n\n3. MessageFormat: Wenn Vorlagen mit Platzhaltern benötigt werden
\n\nFür komplexe Vorlagen mit sich wiederholenden Argumenten oder Lokalisierung – MessageFormat in Kotlin. Es kann Wortformen (Singular/Plural) auswählen und Daten formatieren.
\n\nimport java.text.MessageFormat\n\nval pattern = "{0} hat {1} {0,choice,0#Äpfel|1#Apfel|2#Äpfel}."\nval result = MessageFormat.format(pattern, "Petja", 5)\nprintln(result) // Petja hat 5 Äpfel.\n\n// Mit Datum\nval datePattern = "Heute ist {0,date,long}. Uhrzeit: {0,time,short}"\nval now = java.util.Date()\nprintln(MessageFormat.format(datePattern, now))\n\nWann wählen: Internationalisierung (i18n), komplexe Deklinationen, Vorlagen mit 5+ Argumenten. Nachteil: Umständliche Syntax und Abhängigkeit von java.text.
4. Kotlin-Erweiterungen: Prägnanz und Typsicherheit
\n\nDie Kotlin-Community liebt Erweiterungen zur String-Formatierung. Sie können Ihr eigenes Rad erfinden oder fertige Bibliotheken verwenden (z. B. kotlinx.string).
// Einfachste Erweiterung\nfun String.format(vararg args: Any?): String {\n return String.format(this, *args)\n}\n\n// Verwendung\nval template = "Hallo, %s! Dein Kontostand: %.2f USD"\nval msg = template.format("Maxim", 1234.5678)\nprintln(msg) // H