StringBuilder.charAt în Java

charAt() citește caracterul de la o poziție, setCharAt() îl înlocuiește direct în StringBuilder.

Sintaxă
char charAt(int index)
void setCharAt(int index, char c)

Ce face StringBuilder.charAt

charAt(index) funcționează la fel ca la String.charAt: poziția începe de la 0, iar o poziție în afara textului aruncă StringIndexOutOfBoundsException.

setCharAt(index, c) schimbă un singur caracter, fără să mute nimic. Lungimea rămâne aceeași. Este ceea ce lipsește la String, unde nu poți modifica o literă.

Parametri

Parametru Descriere
index Poziția caracterului, de la 0 la length() - 1.
c Pentru setCharAt: noul caracter.

Ce returnează

charAt: caracterul de la poziție. setCharAt nu returnează nimic (void).

Exemple

Exemplul 1: Prima literă mare

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("timișoara");
        char prima = sb.charAt(0);
        sb.setCharAt(0, Character.toUpperCase(prima));
        System.out.println(sb);
    }
}

Rezultat

Timișoara

Exemplul 2: Ascunderea unui număr de telefon

Înlocuim cifrele din mijloc cu *; lungimea textului nu se schimbă.

public class Main {
    public static void main(String[] args) {
        StringBuilder tel = new StringBuilder("0745123456");
        for (int i = 3; i < tel.length() - 3; i++) {
            tel.setCharAt(i, '*');
        }
        System.out.println(tel + " (" + tel.length() + " caractere)");
    }
}

Rezultat

074****456 (10 caractere)

Exemplul 3: Înlocuirea diacriticelor cu sedilă

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Bra\u015fov \u0163ara");
        for (int i = 0; i < sb.length(); i++) {
            char c = sb.charAt(i);
            if (c == '\u015f') {
                sb.setCharAt(i, 'ș');
            } else if (c == '\u0163') {
                sb.setCharAt(i, 'ț');
            }
        }
        System.out.println(sb);
    }
}

Rezultat

Brașov țara

Greșeli frecvente

  • Încerci sb.charAt(0) = 'A': nu se poate atribui unui apel de metodă. Folosește setCharAt.
  • Vrei să înlocuiești un caracter cu mai multe (de exemplu ș cu sh) prin setCharAt: nu se poate, ai nevoie de replace(start, end, text).

Comenzi înrudite

  • StringBuilder.replace: replace() înlocuiește caracterele dintre două poziții cu un text nou; indexOf() găsește poziția unui subșir.
  • String.charAt: Returnează caracterul (char) de la poziția dată; prima poziție este 0, ultima este length() – 1.
  • StringBuilder: Un text care se poate modifica pe loc: adaugi, inserezi și ștergi fără să creezi un șir nou la fiecare pas.
  • Character.toUpperCase: Transformă un singur caracter în literă mare sau în literă mică; celelalte caractere rămân la fel.