Ce face Pattern.split
pattern.split(text) taie textul în fiecare loc unde se potrivește modelul și returnează bucățile dintre ele. Cu un model ca \s*[,;]\s* împarți după virgulă sau punct și virgulă, eliminând și spațiile din jur.
Bucățile goale de la sfârșit sunt eliminate. Cu limita controlezi numărul maxim de bucăți (ultima conține tot restul); o limită negativă păstrează și bucățile goale de la sfârșit. splitAsStream dă bucățile ca Stream<String>.
String.split(regex) face același lucru, dar compilează modelul la fiecare apel. Dacă împarți multe rânduri, păstrează un Pattern.
Parametri
| Parametru | Descriere |
|---|---|
text |
Textul împărțit. |
limita |
Opțional: numărul maxim de bucăți (0 = toate, fără cele goale de la final). |
Ce returnează
Un String[] cu bucățile (sau un Stream la splitAsStream).
Exemple
Exemplul 1: Separatori diferiți și spații în plus
import java.util.Arrays;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern separator = Pattern.compile("\\s*[,;]\\s*");
String orase = "Iași ,Cluj; Brașov , Sibiu;Arad";
System.out.println(Arrays.toString(separator.split(orase)));
System.out.println(Arrays.toString(separator.split("a,b,,c,,")));
System.out.println(Arrays.toString(separator.split("a,b,,c,,", -1)));
System.out.println(Arrays.toString(separator.split("nume, prenume, adresa completă", 2)));
}
}
Rezultat
[Iași, Cluj, Brașov, Sibiu, Arad]
[a, b, , c]
[a, b, , c, , ]
[nume, prenume, adresa completă]
Exemplul 2: splitAsStream: cuvintele unui text
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern spatii = Pattern.compile("\\W+", Pattern.UNICODE_CHARACTER_CLASS);
String text = "Ce frumos e în munți, la Sinaia!";
spatii.splitAsStream(text)
.filter(c -> c.length() > 2)
.map(String::toLowerCase)
.forEach(System.out::println);
}
}
Rezultat
frumos
munți
sinaia
Greșeli frecvente
- Împarți după
"."sau"|"și primești bucăți ciudate: sunt caractere speciale în regex. FoloseștePattern.quote(".")sau"\\.". - Te aștepți să păstrezi câmpurile goale de la sfârșitul unui rând CSV. Dă limita
-1.
Comenzi înrudite
Pattern: O expresie regulată compilată; compile o pregătește o dată, matcher o aplică pe un text ca să cauți potriviri.Pattern.quote: Transformă un text într-un model care se potrivește exact cu el, chiar dacă are caractere speciale (. * + ? |).String.split: Împarte șirul în bucăți după un separator (expresie regulată) și returnează un array de String.Stream.filter: Păstrează în stream doar elementele care îndeplinesc o condiție.