StringBuilder.delete în Java

delete() șterge caracterele dintre două poziții, deleteCharAt() șterge un singur caracter.

Sintaxă
StringBuilder delete(int start, int end)
StringBuilder deleteCharAt(int index)

Ce face StringBuilder.delete

delete(start, end) elimină caracterele de la start până la end, fără end. Dacă end depășește lungimea, se șterge până la sfârșit. Caracterele de după bucata ștearsă se mută spre stânga.

deleteCharAt(index) elimină exact un caracter. Este des folosit pentru a scoate ultima virgulă dintr-o listă construită cu append: sb.deleteCharAt(sb.length() - 1).

Parametri

Parametru Descriere
start Prima poziție ștearsă.
end Poziția unde se oprește ștergerea (exclusiv).
index Pentru deleteCharAt: poziția caracterului șters.

Ce returnează

Același StringBuilder.

Exemple

Exemplul 1: Ștergerea unui cuvânt

public class Main {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Elena Maria Popa");
        sb.delete(6, 12);
        System.out.println(sb);
        sb.delete(5, 100);
        System.out.println(sb);
    }
}

Rezultat

Elena Popa
Elena

Exemplul 2: Scoaterea ultimei virgule

public class Main {
    public static void main(String[] args) {
        int[] note = {9, 7, 10};
        StringBuilder sb = new StringBuilder();
        for (int nota : note) {
            sb.append(nota).append(',');
        }
        System.out.println(sb);
        sb.deleteCharAt(sb.length() - 1);
        System.out.println(sb);
    }
}

Rezultat

9,7,10,
9,7,10

Exemplul 3: Eliminarea spațiilor dintr-un IBAN

Când ștergem un caracter, următorul ajunge pe aceeași poziție; de aceea nu creștem i după o ștergere.

public class Main {
    public static void main(String[] args) {
        StringBuilder iban = new StringBuilder("RO49 AAAA 1B31 0075");
        int i = 0;
        while (i < iban.length()) {
            if (iban.charAt(i) == ' ') {
                iban.deleteCharAt(i);
            } else {
                i++;
            }
        }
        System.out.println(iban);
    }
}

Rezultat

RO49AAAA1B310075

Greșeli frecvente

  • Crezi că delete(2, 5) șterge 5 caractere. Șterge pozițiile 2, 3 și 4: adică end - start caractere.
  • Ștergi într-o buclă for cu i++: după fiecare ștergere sari peste caracterul următor. Parcurge invers sau crește indicele doar când nu ștergi.
  • Apelezi deleteCharAt(sb.length() - 1) pe un constructor gol: primești StringIndexOutOfBoundsException.

Comenzi înrudite

  • StringBuilder: Un text care se poate modifica pe loc: adaugi, inserezi și ștergi fără să creezi un șir nou la fiecare pas.
  • StringBuilder.insert: Inserează un text sau o valoare la o poziție dată; caracterele de după poziție se mută spre dreapta.
  • StringBuilder.replace: replace() înlocuiește caracterele dintre două poziții cu un text nou; indexOf() găsește poziția unui subșir.
  • StringBuilder.charAt: charAt() citește caracterul de la o poziție, setCharAt() îl înlocuiește direct în StringBuilder.