Java String split()-metoden med eksempel
⚡ Smart oppsummering
Del en streng inn Java bruker split()-metoden, som bryter tekst der et skilletegn samsvarer og returnerer delene som en streng-matrise. Et valgfritt grenseargument setter en grense for hvor mange deler som produseres, og lar resten være intakt.

Hva er split()-streng i Java?
Ocuco split() metoden lar deg bryte en string basert på en spesifikk Java strengskilletegn. Oftest er skilletegnet et mellomrom eller et komma (,) der du vil bryte strengen.
split() funksjonssyntaks
public String[] split(String regex) public String[] split(String regex, int limit)
⚠️ Merknad om returtypen: split() returnerer en String[] matrise, ikke en eneste StringTilordne resultatet til en vanlig String Variabelen klarer ikke å kompilere med en feil av typen incompatible-types, som er den vanligste feilen nybegynnere gjør med denne metoden.
Parameter
- Regex: det regulære uttrykket som brukes på teksten eller strengen.
- Grense: det maksimale antallet verdier i den resulterende tabellen. Hvis den utelates eller er null, returneres alle delstrenger som samsvarer med regexen.
Hvordan dele en streng inn Java med skilletegn
Eksemplet nedenfor viser hvordan du deler en streng i Java med et skilletegn.
Anta at vi har en strengvariabel kalt strMain dannet av noen få ord – Alfa, Beta, Gamma, Delta, Sigma — alle atskilt med komma (,).
Her hvis vi vil ha alle individuelle strenger, vil det best mulige mønsteret være å dele det basert på komma. Så vi får fem separate strenger som følger:
- Alpha
- Beta
- gamma
- Delta
- Sigma
Bruk strengen splittet metode i Java mot strengen som må deles, og oppgi skilletegnet som et argument.
I dette Java del streng med skilletegn, er skilletegnet et komma (,) og resultatet av Java split streng ved kommaoperasjon vil gi deg en matrisedeling.
class StrSplit{
public static void main(String []args){
String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
String[] arrSplit = strMain.split(", ");
for (int i=0; i < arrSplit.length; i++)
{
System.out.println(arrSplit[i]);
}
}
}
Løkken i koden skriver bare ut hver Java del streng fra arrayet etter delfunksjonen i Java, som vist under.
Forventet utgang:
Alpha Beta Delta Gamma Sigma
Eksempel: Java String split()-metode med regulært uttrykk og lengde
Tenk deg en situasjon der du bare trenger de første 'n' elementene etter delingsfunksjonen i Java, men ønsker at resten av strengen skal forbli som den er. En utdata er noe slikt:
- Alpha
- Beta
- Delta, Gamma, Sigma
Dette kan oppnås ved å sende et annet argument sammen med split()-operasjonen i Java, og det vil være grensen for antall strenger som kreves.
Tenk på følgende kode for splittmetoden i Java:
class StrSplit2{
public static void main(String []args){
String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
String[] arrSplit_2 = strMain.split(", ", 3);
for (int i=0; i < arrSplit_2.length; i++){
System.out.println(arrSplit_2[i]);
}
}
}
Forventet utgang:
Alpha Beta Delta, Gamma, Sigma
Merk at en grense på 3 produserer nøyaktig tre elementer: de to første separatorene blir tatt i betraktning, og alt etter den andre separatoren holdes sammen som det tredje elementet.
Hvordan dele en streng inn Java av Space
Tenk deg en situasjon der du vil dele en streng med mellomrom. Her har vi en delt streng Java variabel navngitt strMain dannet av noen få ord: Velkommen til Guru99.
public class StrSplit3{
public static void main(String args[]){
String strMain = "Welcome to Guru99";
String[] arrSplit_3 = strMain.split("\\s");
for (int i=0; i < arrSplit_3.length; i++){
System.out.println(arrSplit_3[i]);
}
}
}
Forventet utgang:
Welcome to Guru99
Mønsteret \\s samsvarer med et enkelt mellomromstegn. Bruk \\s+ i stedet når ord kan skilles med mer enn ett mellomrom, ellers produserer hvert ekstra mellomrom et tomt element.
Slik beholder du tomme strenger når du deler inn Java
Én oppførsel av split() overrasker nesten alle første gang de møter det: etterfølgende tomme strenger kastes lydløst bort. Splitting "a,b,," på et komma returnerer to elementer, ikke fire, fordi standardgrensen på null forkaster alle tomme felt på slutten av matrisen.
Dette er viktig når dataene er posisjonsbaserte – for eksempel en CSV-rad der en manglende verdi på slutten fortsatt opptar en kolonne. Hvis disse blanke feltene mistes, forskyves alle nedstrømsindekser.
Passerer en negativ grensen holder dem:
String row = "Alpha,Beta,,"; // Default: trailing empty fields removed -> length 2 String[] a = row.split(","); System.out.println(a.length); // prints 2 // Negative limit: every field preserved -> length 4 String[] b = row.split(",", -1); System.out.println(b.length); // prints 4
Tre regler dekker alle tilfeller. En grense på null, som er standardinnstillingen, bruker mønsteret så mange ganger som mulig og slipper deretter etterfølgende tomme strenger. positiv `limit` bruker mønsteret maksimalt `limit minus én` ganger, slik at det siste elementet holder den urørte resten, nøyaktig slik det tidligere eksemplet med en grense på 3 viste. negativ limit bruker mønsteret så mange ganger som mulig og beholder alle tomme felt, inkludert de etterfølgende.
Innledende tomme strenger oppfører seg annerledes igjen: deling ",a,b" gir alltid et tomt første element uavhengig av grensen, fordi mønsteret samsvarer i posisjon null. Beskytt deg mot dette ved å trimme inputen, eller ved å filtrere den resulterende matrise før bruk.
split() vs StringTokenizer vs Pattern.split(): Hvilken skal brukes
Java tilbyr tre måter å dele en streng i biter. De varierer i hva slags skilletegn hver aksepterer, hva de returnerer, og om mønsteret kompileres én gang eller rekompileres ved hvert kall, noe som betyr noe når delingen skjer inne i en løkke.
| Aspekt | String.split() | StringTokenizer | Mønster.splitt() |
|---|---|---|---|
| delimiter | Vanlig uttrykk | Sett med enkelttegn | Vanlig uttrykk |
| Returer | Streng [] | Tokener via en opplisting | Streng [] |
| Mønster kompilert | På hver samtale | Ikke aktuelt | En gang, deretter brukt om igjen |
| Beholder tomme felt | Bare med en negativ grense | aldri | Bare med en negativ grense |
| status | anbefalt | Eldre, beholdt for kompatibilitet | Anbefales i løkker |
Bruk String.split() for vanlig engangsarbeid, siden det er kortest å skrive og leses tydelig. Forhåndskompiler med Pattern.compile(",").split(text) når man deler det inne i en løkke, fordi det regulære uttrykket da kompileres én gang i stedet for ved hver iterasjon. Unngå StringTokenizer i ny kode; den gjenstår bare for bakoverkompatibilitet.
Felles Java split()-feil og hvordan du fikser dem
Nesten alle problemer med split() tracgår tilbake til én av to årsaker: argumentet er et regulært uttrykk snarere enn en bokstavelig streng, eller grensereglene beskrevet ovenfor forkaster felt uventet. Hver feil nedenfor angir symptomet og løsningen.
- Deling på en prikk returnerer en tom array:
"1.2.3".split(".")samsvarer med alle tegn, fordi punktum er et regex-jokertegn. Escape det somsplit("\\."). - Å dele på et rør oppfører seg merkelig: pipe betyr alternering i regex. Escape det som
split("\\|"). - Feil: Inkompatible typer: resultatet ble tildelt en
StringDeklarer variabelen somString[]. - Uventet tomt første element: Skilletegnet vises i starten av inndataene. Trim strengen først.
- Manglende verdier på slutten: Etterfølgende tomme felt ble forkastet av standardgrensen. Bestått
-1som det andre argumentet. - NullPointerException:
split()ble kalt på en nullreferanse. Sjekk for null før deling, da metoden ikke kan håndtere det.

