Kurz: val roh = """ Mehrzeilig, “Anführungszeichen” und \n bleiben roh. """.trimIndent() println(roh) println(“Tab:\tText \ ” A”) } “ `output 10 H t Hallo HALLO WELT hallo welt Hallo Kotlin true true 6 [Hallo, Welt] tleW ollaH x|.
Teil des Kurses Kotlin
Strings
fun main() {
val s = "Hallo Welt"
println("${s.length} ${s[0]} ${s.last()} ${s.substring(0, 5)} ${s.toUpperCase()} ${s.toLowerCase()}")
println(s.replace("Welt", "Kotlin"))
println(s.contains("Welt"))
println(s.startsWith("Hal"))
println(s.indexOf('W'))
println(s.split(" "))
println(s.reversed())
println(" x ".trim() + "|")
println("ab".repeat(3))
println("a,b;c".split(",", ";"))
println("kotlin".capitalize())
println(s.take(5) + "-" + s.drop(6))
println("Mia" + " " + 17)
println("42".padStart(5, '0'))
println("abc" < "abd")
println("Name: %s, Alter: %d".format("Mia", 17))
println(listOf("x", "y", "z").joinToString(" | "))
val roh = """
Mehrzeilig,
"Anführungszeichen" und \n bleiben roh.
""".trimIndent()
println(roh)
println("Tab:\tText \\ \" A")
}Ausgabe:
10 H t Hallo HALLO WELT hallo welt
Hallo Kotlin
true
true
6
[Hallo, Welt]
tleW ollaH
x|
ababab
[a, b, c]
Kotlin
Hallo-Welt
Mia 17
00042
true
Name: Mia, Alter: 17
x | y | z
Mehrzeilig,
"Anführungszeichen" und \n bleiben roh.
Tab: Text \ " AStrings sind unveränderlich. Vergleiche Inhalte mit == (ruft equals auf), Identität mit ===. Für viele Anhänge nutze StringBuilder.
fun main() {
val sb = StringBuilder()
for (i in 1..5) sb.append(i).append(',')
sb.setLength(sb.length - 1)
println(sb)
println(buildString { append("a"); append("b") })
val a = "x"; val b = "x"
println(a == b)
}Ausgabe:
1,2,3,4,5
ab
trueif ist ein Ausdruck
fun main() {
val punkte = 78
if (punkte >= 90) {
println("sehr gut")
} else if (punkte >= 75) {
println("gut")
} else {
println("weiter üben")
}
val ergebnis = if (punkte >= 50) "bestanden" else "durchgefallen" // statt ternärem Operator
println(ergebnis)
println(maxOf(3, 8))
}Ausgabe:
gut
bestanden
8when: das mächtige switch
fun beschreibe(x: Any): String = when (x) {
0 -> "null"
1, 2, 3 -> "klein"
in 4..9 -> "mittel"
is Int -> "große Zahl"
is String -> "Text mit ${x.length} Zeichen"
is List<*> -> "Liste mit ${x.size} Elementen"
else -> "unbekannt"
}
fun main() {
for (v in listOf(0, 2, 7, 100, "Hallo", listOf(1, 2), 3.5)) println("$v: ${beschreibe(v)}")
val note = 87
val buchstabe = when {
note >= 90 -> "A"
note >= 80 -> "B"
else -> "C"
}
println(buchstabe)
}Ausgabe:
0: null
2: klein
7: mittel
100: große Zahl
Hallo: Text mit 5 Zeichen
[1, 2]: Liste mit 2 Elementen
3.5: unbekannt
Bwhen ohne Argument ersetzt lange if-else-Ketten. Als Ausdruck muss er alle Fälle abdecken (else).
Schleifen
fun main() {
for (i in 1..3) print("$i ")
println()
for (i in 10 downTo 1 step 4) print("$i ")
println()
for (i in 0 until 3) print("$i ")
println()
for ((index, wert) in listOf("a", "b", "c").withIndex()) print("$index=$wert ")
println()
for (c in "Kotlin") print("$c.")
println()
var n = 3
while (n > 0) { print("$n "); n-- }
println()
do { n++ } while (n < 3)
println(n)
aussen@ for (i in 1..3) {
for (j in 1..3) {
if (j == 2) continue@aussen
if (i == 3) break@aussen
print("$i$j ")
}
}
println()
repeat(3) { print("*") }
println()
}Ausgabe:
1 2 3
10 6 2
0 1 2
0=a 1=b 2=c
K.o.t.l.i.n.
3 2 1
3
11 21
***Merke
- String-Funktionen:
substring,split,replace,contains,trim,repeat,format - Roh-Strings mit
"""..."""undtrimIndent() ifundwhenliefern Werte (kein? :nötig)whenmit Wert, Bereich (in), Typ (is) und ohne Argument- Schleifen:
for (x in 1..10),downTo,step,until, Labels mitbreak@name
Übungsaufgabe
Schreibe FizzBuzz für 1 bis 20 mit when.
Quiz zur Selbstkontrolle
Was ist der Ersatz für den ternären Operator?
- if als Ausdruck (richtig)
- ? :
- switch
- when nur
Was macht 1 until 5?
- 1 bis 4 (richtig)
- 1 bis 5
- 0 bis 5
- 2 bis 5
Wie erzeugt man einen mehrzeiligen Text?
- Mit dreifachen Anführungszeichen (richtig)
- Mit Backticks
- Mit +
- Mit \n allein
Weiter im Kurs
Zurück: val, var und Datentypen
Weiter: Funktionen
Alle Kapitel: Kotlin im Überblick