EMZETT.
Login

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

Kapitel 3 von 13 im Kurs Kotlin. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

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 \ " A

Strings 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
true

if 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
8

when: 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
B

when 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 """...""" und trimIndent()
  • if und when liefern Werte (kein ? : nötig)
  • when mit Wert, Bereich (in), Typ (is) und ohne Argument
  • Schleifen: for (x in 1..10), downTo, step, until, Labels mit break@name

Übungsaufgabe

Schreibe FizzBuzz für 1 bis 20 mit when.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: val, var und Datentypen

Weiter: Funktionen

Alle Kapitel: Kotlin im Überblick