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.

  • 🧩 Returtype: split() returnerer String[], aldri en enkelt streng, så resultatet må tilordnes en array.
  • 🔤 Skilletegn er regex: Argumentet er et regulært uttrykk, så tegn som punktum og pipe trenger escaping.
  • 🔢 Grenseargument: Hvis man overskrider en grense på 3, produseres det to delte deler, og resten av teksten beholdes som det siste elementet.
  • Mellomromsmønster: Mønsteret \\s samsvarer med et hvilket som helst mellomromstegn, som deler en setning inn i ord.
  • 🕳️ Etterfølgende blanke tegn: Tomme etterfølgende felt forkastes med mindre en negativ grense er oppgitt.
  • 🔁 Leseresultater: En standard for løkke over arraylengden skriver ut hvert stykke i rekkefølge.

Java String split() Metode

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 (,).

 Del en streng inn Java

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:

  1. Alpha
  2. Beta
  3. 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 som split("\\.").
  • Å 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 som String[].
  • 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 -1 som det andre argumentet.
  • NullPointerException: split() ble kalt på en nullreferanse. Sjekk for null før deling, da metoden ikke kan håndtere det.

Spørsmål og svar

Bruk en tegnklasse, som i split("[,;]"), som enten brytes ved komma eller semikolon. Alternasjon fungerer også: split(",|;").

Ja. Pakk inn arrayet med Arrays.asList(text.split(",")) for en visning med fast størrelse, eller new ArrayList<>(Arrays.asList(...)) når listen må endres i etterkant.

Ja. AI Verktøy produserer et arbeidsmønster fra et beskrevet format og forklarer hvert token. Test resultatet mot kanttilfeller som tomme felt og anførselstegn før du stoler på det.

AI-assistenter identifiserer om årsaken er et uescapet metategn, et forkastet etterfølgende felt eller et innledende skilletegn, som er de tre forklaringene på en uventet arraylengde.

Bare for enkle data. Den kan ikke håndtere komma i anførselstegn eller innebygde linjeskift, så et dedikert CSV-bibliotek er tryggere for ekte filer. Å lese dem linje for linje med BufferedReader passer godt sammen med et slikt bibliotek.

Oppsummer dette innlegget med: