Java De `split()`-methode van een string met een voorbeeld.
โก Slimme samenvatting
Splits een string in Java Met behulp van de `split()`-methode wordt tekst opgesplitst op elke plek waar een scheidingsteken voorkomt en worden de stukken als een String-array geretourneerd. Een optioneel argument `limit` beperkt het aantal geproduceerde stukken, waardoor de rest intact blijft.

Wat is de split()-string in Java?
De split() Met deze methode kun je een breuk veroorzaken. snaar gebaseerd op een specifieke Java Een tekenreeksafscheider. Meestal is de afscheider een spatie of een komma (,) waarmee je de tekenreeks wilt onderbreken.
split()-functiesyntaxis
public String[] split(String regex) public String[] split(String regex, int limit)
โ ๏ธ Opmerking over het retourtype: split() geeft een terug String[] reeks, geen enkele StringHet resultaat toewijzen aan een eenvoudige variabele. String De variabele compileert niet en geeft een foutmelding over incompatibele gegevenstypen. Dit is de meest voorkomende fout die beginners maken bij deze methode.
Parameter
- Reguliere expressie: De reguliere expressie die op de tekst of tekenreeks wordt toegepast.
- Begrenzing: Het maximale aantal waarden in de resulterende array. Als dit wordt weggelaten of nul is, worden alle substrings die aan de reguliere expressie voldoen, geretourneerd.
Een string splitsen Java met scheidingsteken
Het onderstaande voorbeeld laat zien hoe je een tekenreeks kunt splitsen. Java met een scheidingsteken.
Stel dat we een stringvariabele hebben met de naam strMain gevormd uit een paar woorden โ Alpha, Beta, Gamma, Delta, Sigma โ alles gescheiden door een komma (,).
Als we hier alle individuele strings willen, zou het best mogelijke patroon zijn om deze te splitsen op basis van de komma. We krijgen dus als volgt vijf afzonderlijke strings:
- Alpha
- beta
- Gamma
- Delta
- Sigma
Gebruik de tekenreeks spleet methode in Java Gebruik de te splitsen tekenreeks als argument en geef het scheidingsteken mee.
In deze Java splits de tekenreeks per scheidingsteken, het scheidingsteken is een komma (,) en het resultaat van de Java De splitsbewerking string door komma levert een array-splitsing op.
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]);
}
}
}
De lus in de code drukt ze gewoon af Java splits de tekenreeks uit de array na de split-functie in JavaZoals hieronder aangegeven.
Verwachte resultaten:
Alpha Beta Delta Gamma Sigma
Voorbeeld: Java String split()-methode met regex en lengte
Stel je een situatie voor waarin je alleen de eerste 'n' elementen nodig hebt na de split-functie in JavaMaar ik wil dat de rest van de tekenreeks ongewijzigd blijft. Een uitvoer die er ongeveer zo uitziet:
- Alpha
- beta
- Delta, Gamma, Sigma
Dit kan worden bereikt door een extra argument mee te geven aan de split()-bewerking. JavaEn dat zal de limiet zijn van het aantal benodigde tekenreeksen.
Bekijk de volgende code van de split-methode in 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]);
}
}
}
Verwachte resultaten:
Alpha Beta Delta, Gamma, Sigma
Merk op dat een limiet van 3 precies drie elementen oplevert: de eerste twee scheidingstekens worden gerespecteerd en alles na het tweede scheidingsteken wordt als het derde element bij elkaar gehouden.
Hoe een string te splitsen Java door de ruimte
Stel je voor dat je een tekenreeks wilt splitsen op spatie. Hier hebben we een gesplitste tekenreeks. Java variabele genoemd strMain gevormd uit een paar woorden: Welkom bij 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]);
}
}
}
Verwachte resultaten:
Welcome to Guru99
Het patroon \\s komt overeen met รฉรฉn enkel witruimtekarakter. Gebruik \\s+ Gebruik deze optie wanneer woorden door meer dan รฉรฉn spatie gescheiden kunnen worden; anders resulteert elke extra spatie in een leeg element.
Hoe behoud je lege tekenreeksen bij het splitsen? Java
Een van de gedragingen van split() Het verrast bijna iedereen die het voor het eerst tegenkomt: de achtergebleven lege snaren worden geruisloos weggegooid. Splitsen "a,b,," Een invoer met een komma retourneert twee elementen, niet vier, omdat de standaardlimiet van nul elk leeg veld aan het einde van de array negeert.
Dit is van belang wanneer de gegevens positioneel zijn โ bijvoorbeeld een CSV-rij, waarbij een ontbrekende waarde aan het einde nog steeds een kolom inneemt. Het verwijderen van die lege waarden verschuift elke daaropvolgende index.
Het passeren van een negatief De limiet houdt ze tegen:
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
Drie regels zijn van toepassing op alle gevallen. Een limiet van nulDe standaardinstelling past het patroon zo vaak mogelijk toe en verwijdert vervolgens de overgebleven lege tekenreeksen. positief De limiet past het patroon maximaal limiet min รฉรฉn keer toe, waardoor het laatste element de onaangeraakte rest bevat, precies zoals het eerdere voorbeeld met een limiet van 3 liet zien. negatief LIMIT past het patroon zo vaak mogelijk toe en behoudt elk leeg veld, inclusief de velden die eraan voorafgaan.
Beginnende lege strings gedragen zich weer anders: splitsen ",a,b" Dit levert altijd een leeg eerste element op, ongeacht de limiet, omdat het patroon overeenkomt op positie nul. Voorkom dit door de invoer te trimmen of door het resultaat te filteren. reeks voor gebruik.
split() vs StringTokenizer vs Pattern.split(): Welke te gebruiken?
Java Deze functie biedt drie manieren om een โโtekenreeks in stukken te splitsen. Ze verschillen in het type scheidingsteken dat ze accepteren, in wat ze retourneren en in of het patroon eenmalig wordt gecompileerd of bij elke aanroep opnieuw wordt gecompileerd, wat van belang is wanneer het splitsen binnen een lus plaatsvindt.
| Aspect | Tekenreeks.split() | StringTokenizer | Patroon.split() |
|---|---|---|---|
| Delimiter | Reguliere expressie | Set van afzonderlijke tekens | Reguliere expressie |
| Retourneren | Draad[] | Tokens via een opsomming | Draad[] |
| Patroon samengesteld | Bij elk gesprek | Niet van toepassing | Eenmaal gebruikt, daarna hergebruikt |
| Behoudt lege velden | Alleen met een negatieve limiet | nooit | Alleen met een negatieve limiet |
| Status | Aanbevolen | Legacy, behouden voor compatibiliteit. | Aanbevolen in lussen |
Gebruik String.split() Voor gewone eenmalige opdrachten, omdat het het kortst te schrijven is en duidelijk leesbaar. Vooraf compileren met Pattern.compile(",").split(text) Bij het splitsen binnen een lus wordt de reguliere expressie slechts รฉรฉn keer gecompileerd in plaats van bij elke iteratie. Vermijd dit. StringTokenizer in de nieuwe code; het blijft alleen over voor achterwaartse compatibiliteit.
Veelgestelde Java Fouten bij het gebruik van `split()` en hoe je ze kunt oplossen
Vrijwel elk probleem met split() tracDit is terug te voeren op een van de volgende twee oorzaken: het argument is een reguliere expressie in plaats van een letterlijke tekenreeks, of de hierboven beschreven limietregels negeren onverwacht velden. Bij elke foutmelding hieronder wordt het symptoom en de oplossing genoemd.
- Splitsen op een punt levert een lege array op:
"1.2.3".split(".")komt overeen met elk teken, omdat de punt een regex-jokerteken is. Ontsnap eraan alssplit("\\."). - Het splitsen van een pijpleiding gedraagt โโzich vreemd: De pipe (|) betekent afwisseling in reguliere expressies. Ontsnap eraan als
split("\\|"). - Foutmelding 'Incompatibele typen': het resultaat werd toegewezen aan een
StringDeclareer de variabele alsString[]. - Onverwacht leeg eerste element: Het scheidingsteken staat aan het begin van de invoer. Trim de tekenreeks eerst.
- Ontbrekende waarden aan het einde: Achterliggende lege velden werden door de standaardlimiet genegeerd. Doorgaan
-1als tweede argument. - NullPointerException:
split()De aanroep gebeurde op een null-referentie. Controleer op null voordat u gaat splitsen, aangezien de methode dit niet kan verwerken.

