String.toCharArray în Kotlin

Copiază caracterele textului într-un CharArray, un tablou care, spre deosebire de String, poate fi modificat.

Sintaxă
fun String.toCharArray(): CharArray
fun CharArray.concatToString(): String

Ce face String.toCharArray

toCharArray() returnează un CharArray nou cu toate caracterele textului. Spre deosebire de String, tabloul se poate modifica: poți schimba un caracter (litere[0] = 'X') sau îl poți sorta pe loc cu sort().

Înapoi la text ajungi cu concatToString() sau String(tablou). Dacă vrei doar să parcurgi caracterele, nu ai nevoie de tablou: un for (c in text) merge direct pe String. Pentru o listă folosește toList().

Ce returnează

Un CharArray nou, cu aceeași lungime ca textul.

Exemple

Exemplul 1: Modificarea unui caracter

Un String nu poate fi modificat, dar tabloul obținut din el da.

fun main() {
    val litere = "pisică".toCharArray()
    litere[0] = 'P'
    println(litere.concatToString())
    println(litere.size)
}

Rezultat

Pisică
6

Exemplul 2: Anagrame cu sortare

Două cuvinte sunt anagrame dacă au aceleași litere; după sortare, tablourile sunt identice.

fun esteAnagrama(a: String, b: String): Boolean {
    val x = a.lowercase().toCharArray()
    val y = b.lowercase().toCharArray()
    x.sort()
    y.sort()
    return x.contentEquals(y)
}

fun main() {
    println(esteAnagrama("Roma", "amor"))
    println(esteAnagrama("Iași", "Cluj"))
}

Rezultat

true
false

Exemplul 3: Literele unice, în ordine

toCharArray urmat de distinct și sorted dă literele folosite.

fun main() {
    val cuvant = "banana"
    val unice = cuvant.toCharArray().distinct().sorted()
    println(unice)
    println(unice.joinToString(""))
}

Rezultat

[a, b, n]
abn

Greșeli frecvente

  • Afișezi un CharArray cu println(tablou) și primești ceva ca [C@1b6d3586. Transformă-l întâi: concatToString() sau contentToString().
  • Compari două tablouri cu ==, care verifică dacă sunt același obiect. Pentru conținut folosește contentEquals.

Comenzi înrudite

  • String.reversed: Returnează textul cu caracterele în ordine inversă, de la ultimul la primul.
  • Array.sort: Sortează crescător elementele tabloului chiar în tablou (îl modifică, nu creează altul).
  • Array.contentToString: contentToString afișează elementele tabloului ca text; contentEquals compară două tablouri element cu element.