Ce face String.chunked
chunked(4) împarte textul în bucăți consecutive de câte 4 caractere. Ultima bucată poate fi mai scurtă, dacă lungimea nu se împarte exact. Este util pentru IBAN-uri, numere de card afișate pe grupe sau pentru text care trebuie rupt pe rânduri.
windowed(3) returnează toate secvențele de 3 caractere alăturate, mutând fereastra cu câte un caracter: "abcd" dă [abc, bcd]. Cu step alegi cât se mută fereastra, iar cu partialWindows = true păstrezi și ferestrele incomplete de la final.
Parametri
| Parametru | Descriere |
|---|---|
size |
Lungimea fiecărei bucăți sau ferestre. |
step |
Pentru windowed: cu câte caractere se mută fereastra (implicit 1). |
partialWindows |
Pentru windowed: dacă se păstrează ferestrele mai scurte de la final. |
Ce returnează
O List<String>.
Exemple
Exemplul 1: Un IBAN afișat pe grupe
Grupele de câte 4 caractere sunt unite cu spațiu, ca pe extrasul de cont.
fun main() {
val iban = "RO49AAAA1B31007593840000"
println(iban.chunked(4))
println(iban.chunked(4).joinToString(" "))
}
Rezultat
[RO49, AAAA, 1B31, 0075, 9384, 0000]
RO49 AAAA 1B31 0075 9384 0000
Exemplul 2: Ferestre suprapuse
Fără step, fereastra se mută cu un caracter. Cu step = 2 și ferestre parțiale apar și bucățile scurte de la final.
fun main() {
val cuvant = "Brașov"
println(cuvant.windowed(3))
println(cuvant.windowed(4, step = 2, partialWindows = true))
}
Rezultat
[Bra, raș, așo, șov]
[Braș, așov, ov]
Exemplul 3: Litere dublate alăturate
Cu ferestre de 2 caractere găsim perechile în care litera se repetă.
fun main() {
val text = "alee cuurent foosta"
val dubluri = text.windowed(2).filter { it[0] == it[1] && it[0] != ' ' }
println(dubluri)
}
Rezultat
[ee, uu, oo]
Greșeli frecvente
- Aștepți ca ultima bucată din
chunkedsă fie completată cu spații. Ea rămâne mai scurtă; foloseștepadEnddacă ai nevoie de lungime egală. - Confunzi windowed cu chunked: windowed implicit suprapune bucățile. Pentru bucăți fără suprapunere folosește
chunkedsaustep = size.
Comenzi înrudite
String.split: Împarte un text în bucăți după un separator și returnează o listă de String-uri.String.take: take ia primele n caractere, takeLast ultimele n, iar drop sare peste primele n și returnează restul.String.padStart: Completează textul la o lungime dată, adăugând un caracter la început (padStart) sau la final (padEnd).