Java String split()-metoden med exempel

⚡ Smart sammanfattning

Dela in en sträng Java med hjälp av metoden split(), som bryter text där en avgränsare matchar och returnerar delarna som en String-array. Ett valfritt limit-argument begränsar hur många delar som produceras, medan resten lämnas intakt.

  • 🧩 Returtyp: split() returnerar String[], aldrig en enda String, så resultatet måste tilldelas en array.
  • 🔤 Avgränsare är regex: Argumentet är ett reguljärt uttryck, så tecken som punkt och pipe behöver esca.ping.
  • 🔢 Gränsargument: Om man överskrider en gräns på 3 skapas två delade delar och resten av texten behålls som det sista elementet.
  • Mönster för blanksteg: Mönstret \\s matchar vilket enskilt blanktecken som helst, vilket delar upp en mening i ord.
  • 🕳️ Efterföljande blanktecken: Tomma efterföljande fält ignoreras om inte en negativ gräns anges.
  • 🔁 Läsresultat: En standard för loop över arraylängden skriver ut varje del i ordning.

Java String split() Metod

Vad är split()-strängen i Java?

Ocuco-landskapet split() metoden låter dig bryta en sträng baserat på en specifik Java strängavgränsare. Oftast är avgränsaren ett mellanslag eller ett kommatecken (,) där du vill bryta strängen.

split() funktionssyntax

public String[] split(String regex)
public String[] split(String regex, int limit)

⚠️ Observera om returtypen: split() returnerar en String[] array, inte en enda StringTilldela resultatet till en slätt String Variabeln misslyckas med att kompilera med ett felmeddelande av typen incompatible-types, vilket är det vanligaste misstaget som nybörjare gör med den här metoden.

Parameter

  • Regex: det reguljära uttryck som tillämpas på texten eller strängen.
  • Begränsa: det maximala antalet värden i den resulterande arrayen. Om det utelämnas eller är noll returneras varje delsträng som matchar regexen.

Hur man delar upp en sträng Java med avgränsare

Exemplet nedan visar hur man delar upp en sträng i Java med en avgränsare.

Anta att vi har en strängvariabel som heter strMain bildad av några få ord — Alfa, Beta, Gamma, Delta, Sigma — alla separerade med kommatecken (,).

 Dela in en sträng Java

Här om vi vill ha alla individuella strängar, skulle det bästa möjliga mönstret vara att dela upp det baserat på kommatecken. Så vi kommer att få fem separata strängar enligt följande:

  • alfa
  • beta
  • Gamma
  • Delta
  • Sigma

Använd strängen delas metod i Java mot strängen som behöver delas och ange separatorn som ett argument.

I detta Java dela sträng med skiftläge, avgränsare är ett kommatecken (,) och resultatet av Java dela sträng med komma-operation kommer att ge dig en array-delning.

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]);
    }
  }
}

Slingan i koden skrivs bara ut var och en Java dela strängen från arrayen efter dela-funktionen i Java, enligt nedanstående.

Förväntad produktion:

Alpha
Beta
Delta
Gamma
Sigma

Exempel: Java String split()-metod med regex och längd

Tänk dig en situation där du bara behöver de första 'n' elementen efter delningsfunktionen i Java, men vill att resten av strängen ska förbli som den är. En utdata som liknar detta:

  1. alfa
  2. beta
  3. Delta, Gamma, Sigma

Detta kan uppnås genom att skicka ett annat argument tillsammans med split()-operationen i Java, och det kommer att vara gränsen för antalet strängar som krävs.

Betrakta följande kod för split-metoden 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]);
    }
  }
}

Förväntad produktion:

Alpha
Beta
Delta, Gamma, Sigma

Observera att en gräns på 3 producerar exakt tre element: de två första separatorerna används, och allt efter den andra separatorn hålls ihop som det tredje elementet.

Hur man delar upp en sträng Java av Space

Tänk dig en situation där du vill dela en sträng med mellanslag. Här har vi en delad sträng Java variabel som heter strMain bildad av några få ord: Välkommen till 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]);
    }
  }
}

Förväntad produktion:

Welcome
to
Guru99

Mönstret \\s matchar ett enda blanksteg. Använd \\s+ istället när ord kan separeras med mer än ett mellanslag, annars producerar varje extra mellanslag ett tomt element.

Hur man behåller tomma strängar vid indelning Java

Ett beteende hos split() överraskar nästan alla första gången de möter det: efterföljande tomma strängar kastas tyst bort. "a,b,," på ett kommatecken returnerar två element, inte fyra, eftersom standardgränsen på noll ignorerar alla tomma fält i slutet av arrayen.

Detta är viktigt när data är positionsbaserade – till exempel en CSV-rad där ett saknat värde i slutet fortfarande upptar en kolumn. Om dessa tomrum förloras ändras varje nedströms index.

Passerar a negativ gränsen håller 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 täcker varje fall. En gräns på noll-, vilket är standardinställningen, tillämpar mönstret så många gånger som möjligt och släpper sedan efterföljande tomma strängar. positiv limit tillämpar mönstret högst limit minus en gånger, så det sista elementet håller den orörda resten, precis som det tidigare exemplet med en gräns på 3 visade. negativ limit tillämpar mönstret så många gånger som möjligt och behåller alla tomma fält, inklusive de efterföljande.

Inledande tomma strängar beter sig annorlunda igen: delning ",a,b" ger alltid ett tomt första element oavsett gränsvärde, eftersom mönstret matchar vid position noll. Skydda dig mot detta genom att trimma inmatningen eller genom att filtrera det resulterande elementet. array innan användning.

split() vs StringTokenizer vs Pattern.split(): Vilken ska användas

Java erbjuder tre sätt att dela upp en sträng i bitar. De skiljer sig åt i vilken typ av avgränsare varje sträng accepterar, i vad de returnerar och i huruvida mönstret kompileras en gång eller omkompileras vid varje anrop, vilket spelar roll när delningen sker inuti en loop.

Aspect String.split () StringTokenizer Mönster.split()
avgränsare Vanligt uttryck Uppsättning enskilda tecken Vanligt uttryck
Returer Sträng[] Tokens via en uppräkning Sträng[]
Mönster kompilerat Vid varje samtal ej tillämplig En gång, sedan återanvänd
Behåller tomma fält Endast med en negativ gräns Aldrig Endast med en negativ gräns
Status Rekommenderad Äldre, behållet för kompatibilitet Rekommenderas i loopar

Använda String.split() för vanligt engångsarbete, eftersom det är kortast att skriva och läser tydligt. Förkompilera med Pattern.compile(",").split(text) vid delning inuti en loop, eftersom det reguljära uttrycket då kompileras en gång snarare än vid varje iteration. Undvik StringTokenizer i ny kod; den finns bara kvar för bakåtkompatibilitet.

Gemensam Java split()-fel och hur man åtgärdar dem

Nästan alla problem med split() tracgår tillbaka till en av två orsaker: argumentet är ett reguljärt uttryck snarare än en literal sträng, eller så ignorerar gränsreglerna som beskrivs ovan fält oväntat. Varje fel nedan anger sitt symptom och sin åtgärd.

  • Dela på en punkt returnerar en tom array: "1.2.3".split(".") matchar alla tecken, eftersom punkten är ett jokertecken i regex. Använd en escape-tecken split("\\.").
  • Att klyva ett rör beter sig konstigt: pipen betyder alternation i regex. Escape det som split("\\|").
  • Fel: Inkompatibla typer: resultatet tilldelades en StringDeklarera variabeln som String[].
  • Oväntat tomt första element: Avgränsaren visas i början av inmatningen. Trimma strängen först.
  • Saknade värden i slutet: efterföljande tomma fält har kasserats av standardgränsen. Godkänd -1 som det andra argumentet.
  • NullPointerException: split() anropades på en null-referens. Kontrollera om det finns null innan delning, eftersom metoden inte kan hantera det.

Vanliga frågor

Använd en teckenklass, som i split("[,;]"), som bryts antingen vid ett komma eller ett semikolon. Alternering fungerar också: split(",|;").

Ja. Omslut arrayen med Arrays.asList(text.split(",")) för en vy med fast storlek, eller new ArrayList<>(Arrays.asList(...)) när listan behöver ändras i efterhand.

Ja. AI Verktygen producerar ett arbetsmönster från ett beskrivet format och förklarar varje token. Testa resultatet mot kantfall som tomma fält och citerade värden innan du litar på det.

AI-assistenter identifierar om orsaken är ett oescapet metatecken, ett kasserat avslutande fält eller en inledande avgränsare, vilka är de tre förklaringarna till en oväntad arraylängd.

Endast för enkel data. Den kan inte hantera kommatecken i citattecken eller inbäddade radbrytningar, så ett dedikerat CSV-bibliotek är säkrare för riktiga filer. Läser dem rad för rad med BufferedReader passar bra ihop med ett sådant bibliotek.

Sammanfatta detta inlägg med: