Ce face String.split
split(regex) taie șirul acolo unde găsește separatorul și returnează bucățile ca String[]. Separatorul este o expresie regulată: "," și ";" merg direct, dar punctul, bara verticală și alte caractere speciale trebuie „scăpate”: "\\.", "\\|". "\\s+" înseamnă „unul sau mai multe spații”.
Bucățile goale de la final sunt eliminate: "a,b,,".split(",") dă [a, b]. Argumentul limita schimbă asta: cu o valoare pozitivă, rezultatul are cel mult atâtea bucăți (ultima conține restul); cu -1, se păstrează și bucățile goale de la final.
splitWithDelimiters (Java 21) returnează și separatorii găsiți, intercalați cu bucățile.
Parametri
| Parametru | Descriere |
|---|---|
regex |
Separatorul, ca expresie regulată. |
limita |
Opțional. > 0: numărul maxim de bucăți; 0 (implicit): elimină golurile de la final; < 0: păstrează tot. |
Ce returnează
Un String[] cu bucățile (cel puțin un element).
Exemple
Exemplul 1: Un rând CSV
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String rand = "Ana;Popescu;Iași;21";
String[] campuri = rand.split(";");
System.out.println(campuri.length + " câmpuri");
System.out.println("Oraș: " + campuri[2]);
int varsta = Integer.parseInt(campuri[3]);
System.out.println("Anul viitor: " + (varsta + 1));
System.out.println(Arrays.toString("Ion Maria Dan".split("\\s+")));
}
}
Rezultat
4 câmpuri
Oraș: Iași
Anul viitor: 22
[Ion, Maria, Dan]
Exemplul 2: Caractere speciale, goluri și limită
split(".") fără „escape” dă un array gol: punctul înseamnă „orice caracter”.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String ip = "192.168.1.10";
System.out.println(Arrays.toString(ip.split(".")));
System.out.println(Arrays.toString(ip.split("\\.")));
System.out.println(Arrays.toString("a,b,,".split(",")));
System.out.println(Arrays.toString("a,b,,".split(",", -1)));
System.out.println(Arrays.toString("cheie=valoare=cu=egal".split("=", 2)));
}
}
Rezultat
[]
[192, 168, 1, 10]
[a, b]
[a, b, , ]
[cheie, valoare=cu=egal]
Exemplul 3: splitWithDelimiters: și separatorii
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
String calcul = "12+30-5+8";
System.out.println(Arrays.toString(calcul.split("[+-]")));
System.out.println(Arrays.toString(calcul.splitWithDelimiters("[+-]", 0)));
}
}
Rezultat
[12, 30, 5, 8]
[12, +, 30, -, 5, +, 8]
Greșeli frecvente
- Împarți după
"."sau"|"fără backslash. Sunt caractere speciale în expresiile regulate; scrie"\\."și"\\|"(sauPattern.quote(".")). - Numeri câmpurile unui CSV cu
split(",")și pierzi coloanele goale de la final. Foloseștesplit(",", -1). - Accesezi
parti[1]fără să verifici lungimea: dacă separatorul lipsește, array-ul are un singur element.
Comenzi înrudite
String.join: Lipește mai multe șiruri într-unul singur, cu un separator între ele (opusul lui split).String.lines: Împarte șirul în rânduri și le returnează ca Stream<String>, recunoscând \n, \r și \r\n.String.matches: Verifică dacă ÎNTREGUL șir se potrivește cu o expresie regulată (validare de formate).String.replaceAll: Înlocuiește toate (replaceAll) sau doar prima (replaceFirst) potrivire a unei expresii regulate.String.substring: Returnează o bucată din șir: de la beginIndex (inclusiv) până la endIndex (exclusiv) sau până la final.