String.trimIndent în Kotlin

Elimină indentarea comună din textele pe mai multe rânduri scrise cu """ ... """ în cod.

Sintaxă
fun String.trimIndent(): String
fun String.trimMargin(marginPrefix: String = "|"): String

Ce face String.trimIndent

Un raw string (între trei ghilimele, """...""") păstrează exact rândurile noi și spațiile din cod. Când îl indentezi ca să arate frumos în program, spațiile ajung și în text. trimIndent() găsește indentarea minimă comună tuturor rândurilor și o elimină; elimină și primul și ultimul rând dacă sunt goale.

trimMargin() folosește un marcaj: elimină tot ce este înainte de | (inclusiv caracterul) pe fiecare rând. Este util când rândurile au indentări diferite pe care vrei să le păstrezi. Poți alege alt marcaj: trimMargin(">").

Parametri

Parametru Descriere
marginPrefix Pentru trimMargin: marcajul de început al fiecărui rând. Implicit |.

Ce returnează

Un String nou, fără indentare.

Exemple

Exemplul 1: Un mesaj pe mai multe rânduri

Spațiile de indentare din cod dispar; rândurile rămân aliniate la stânga.

fun main() {
    val nume = "Ana"
    val mesaj = """
        Bună ziua, $nume!
        Comanda ta a fost trimisă.
        Mulțumim!
    """.trimIndent()
    println(mesaj)
}

Rezultat

Bună ziua, Ana!
Comanda ta a fost trimisă.
Mulțumim!

Exemplul 2: trimMargin păstrează indentarea internă

Totul până la | este eliminat, așa că spațiile de după marcaj rămân.

fun main() {
    val lista = """
        |Cumpărături:
        |  - pâine
        |  - lapte
    """.trimMargin()
    println(lista)
}

Rezultat

Cumpărături:
  - pâine
  - lapte

Exemplul 3: Diferența fără trimIndent

Fără trimIndent, textul are un rând gol la început și spații în fața fiecărui rând.

fun main() {
    val brut = """
        Iași
        Cluj
    """
    println("[" + brut + "]")
    println("[" + brut.trimIndent() + "]")
}

Rezultat

[
        Iași
        Cluj
    ]
[Iași
Cluj]

Greșeli frecvente

  • Uiți de trimIndent și textul trimis pe e-mail sau salvat în fișier are spații în fața fiecărui rând.
  • Folosești trimMargin fără să pui | pe fiecare rând. Rândurile fără marcaj rămân cu indentarea lor.

Comenzi înrudite

  • String.lines: Împarte textul în rânduri, după orice tip de rând nou (\n, \r\n sau \r), și returnează lista lor.
  • String.trim: trim elimină spațiile albe de la începutul și sfârșitul textului; trimStart doar de la început, trimEnd doar de la final.
  • String templates ($nume, ${expresie}): Pun valoarea unei variabile sau a unei expresii direct în text, cu $nume sau ${expresie}.
  • buildString: buildString construiește un text din bucăți cu append și appendLine, apoi îl returnează ca String.