Ce face StringBuilder.insert
insert(pozitie, valoare) pune valoarea înaintea caracterului de la pozitie. Poziția 0 înseamnă la început, iar length() înseamnă la sfârșit (la fel ca append).
Ca și append, există variante pentru toate tipurile, iar metoda returnează același obiect. O poziție negativă sau mai mare decât lungimea aruncă StringIndexOutOfBoundsException.
Parametri
| Parametru | Descriere |
|---|---|
pozitie |
Indicele unde se inserează, între 0 și length(). |
s / c / ... |
Valoarea inserată. |
Ce returnează
Același StringBuilder.
Exemple
Exemplul 1: Inserare la început, la mijloc și la sfârșit
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Popescu");
sb.insert(0, "Ana ");
System.out.println(sb);
sb.insert(4, "Maria ");
System.out.println(sb);
sb.insert(sb.length(), '!');
System.out.println(sb);
}
}
Rezultat
Ana Popescu
Ana Maria Popescu
Ana Maria Popescu!
Exemplul 2: Separator de mii pentru o sumă
Pornim de la dreapta și inserăm un punct la fiecare 3 cifre.
public class Main {
static String cuPuncte(long suma) {
StringBuilder sb = new StringBuilder(Long.toString(suma));
for (int i = sb.length() - 3; i > 0; i -= 3) {
sb.insert(i, '.');
}
return sb.toString();
}
public static void main(String[] args) {
System.out.println(cuPuncte(2500) + " lei");
System.out.println(cuPuncte(1250000) + " lei");
System.out.println(cuPuncte(999) + " lei");
}
}
Rezultat
2.500 lei
1.250.000 lei
999 lei
Exemplul 3: Poziție greșită
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Cluj");
try {
sb.insert(10, "-Napoca");
} catch (StringIndexOutOfBoundsException e) {
System.out.println("Eroare: " + e.getMessage());
}
sb.insert(4, "-Napoca");
System.out.println(sb);
}
}
Rezultat
Eroare: Range [10, 4) out of bounds for length 4
Cluj-Napoca
Greșeli frecvente
- Inserezi mai multe valori de la stânga la dreapta într-o buclă și uiți că fiecare inserare mută pozițiile de după ea. De aceea, în exemplul cu puncte, bucla merge de la dreapta spre stânga.
- Folosești
insert(0, ...)într-o buclă foarte mare: fiecare inserare la început mută tot textul. Dacă poți, adaugă la sfârșit și apoi foloseștereverse()sau altă ordine.
Comenzi înrudite
StringBuilder.append: Adaugă la sfârșitul textului un șir, un caracter, un număr sau orice obiect și returnează același StringBuilder.StringBuilder.delete: delete() șterge caracterele dintre două poziții, deleteCharAt() șterge un singur caracter.StringBuilder.replace: replace() înlocuiește caracterele dintre două poziții cu un text nou; indexOf() găsește poziția unui subșir.StringBuilder: Un text care se poate modifica pe loc: adaugi, inserezi și ștergi fără să creezi un șir nou la fiecare pas.