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.