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 - startcaractere. - Ștergi într-o buclă
forcui++: 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știStringIndexOutOfBoundsException.
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.