Metoden split() kan användas för att dela upp strängar i Java. Den in­ne­hål­ler en parameter för se­pa­ra­torn och en valfri parameter för antalet del­sträng­ar. Det finns också några särdrag att beakta när metoden används. Vi förklarar allt du behöver veta.

Vad är split()?

Java-strängar sam­man­fo­gar tecken, siffror och spe­ci­al­tec­ken. De finns som objekt i klassen java.lang och skapas och mo­di­fie­ras med klassen String. I pro­gram­me­rings­språ­ket Java kan du också dela upp strängar i olika del­sträng­ar. Javas split() används för att extrahera vissa segment från en sträng eller för att dela upp den i enskilda delar. Nedan visar vi mer de­tal­je­rat vad du kan göra med metoden.

När du delar upp en Java-sträng med split() får du en array med flera strängar. Detta blir re­tur­vär­det.

Vad är syntaxen för Java split()?

Den grund­läg­gan­de syntaxen för Java split() är mycket enkel, men kan utökas med valfria pa­ra­met­rar. Här är den grund­läg­gan­de versionen:

String[] split(String regex)
java

I det här exemplet kommer utdata att vara i form av en matris. String är sträng­ob­jek­tet. regex är pa­ra­me­tern som används för att bestämma var strängen ska delas. Pa­ra­me­tern är inte ob­li­ga­to­risk, men re­kom­men­de­ras.

Den extra valfria pa­ra­me­tern limit låter dig ange hur många del­sträng­ar som ska skapas. Dess värde är ett heltal. Om det är noll eller negativt kommer alla del­sträng­ar att in­klu­de­ras i utdata. Om du väljer ett positivt värde får du det antalet del­sträng­ar i utdata. Med den extra valfria pa­ra­me­tern limit ser syntaxen ut som följer:

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

Hur man använder split() med mel­lanslag som separator

Låt oss titta på några praktiska exempel. Först skapar vi en sträng som in­ne­hål­ler fyra ord: ”Detta är ett exempel”. Sedan delar vi upp strängen med hjälp av split(). Det mest intuitiva sättet att dela upp denna sträng är att använda de be­fint­li­ga mel­lansla­gen mellan orden. Så här ser det ut i koden:

public class Main {
	public static void main(String[] args) {
		String x = "This is an example";
		String[] output = x.split(" ");
		for (String y : output) {
			System.out.println(y);
		}
	}
}
java

I det här exemplet ini­ti­a­li­se­ras en sträng­va­ri­a­bel x. Därefter används Java split() på strängen. Pa­ra­me­tern söker efter mel­lanslag i strängen och delar upp den på de ställen där den hittar dem. Re­sul­ta­tet sparas sedan i en array som kallas ”output”. Loopen for används för att lista del­sträng­ar­na. Java-kommandot System.out.println ger oss följande utdata:

This
is
an
example
java

Hur man använder kom­ma­tec­ken som av­grän­sa­re, med och utan mel­lanslag

Du kan också använda split() i Java med strängar som in­ne­hål­ler listor se­pa­re­ra­de med kom­ma­tec­ken. Du behöver bara använda ett litet trick, på grund av hur exakt dina in­struk­tio­ner im­ple­men­te­ras i Java. Låt oss först titta på ett exempel utan tricket. Anta att vi har en lista över vec­ko­da­gar­na, se­pa­re­ra­de med kom­ma­tec­ken. Dessa kom­ma­tec­ken är perfekta se­pa­ra­to­rer för att mata in i regex. Om vi skapar koden på detta sätt ser den ut som följer:

public class Main {
	public static void main(String[] args) {
		String x = "Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday";
		String[] output = x.split(",");
		for (String y : output) {
			System.out.println(y);
		}
	}
}
java

I det här exemplet är re­sul­ta­tet inte helt perfekt:

Sunday
 Monday
 Tuesday
 Wednesday
 Thursday
 Friday
 Saturday
java

Re­sul­ta­tet ger oss en tydlig lista över vec­ko­da­gar­na. Men varje värde efter söndag in­ne­hål­ler ett mel­lanslag före dagen. Eftersom vi bara använde kom­ma­tec­ken som av­grän­sa­re, blev mel­lansla­gen kvar under upp­del­ning­en. För att få ett renare resultat bör vi använda både kom­ma­tec­ken och mel­lanslag som av­grän­sa­re. Om vi gör det ser koden ut så här:

public class Main {
	public static void main(String[] args) {
		String x = "Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday";
		String[] output = x.split(", ");
		for (String y : output) {
			System.out.println(y);
		}
	}
}
java

Ut­mat­ning­en är nu mycket renare:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

Hur man delar upp Java-strängar med siffror

Du kan också använda split() för att dela upp Java-strängar som består av siffror. I vårt exempel tar vi en lång nyckel som delas upp med punkter och kolon. Om vi vill separera siffrorna efter kolonet skulle koden se ut så här:

public class Main {
	public static void main(String[] args) {
		String x = "194.518.552.1.17:6339";
		String[] output = x.split(":");
		for (String y : output) {
			System.out.println(y);
		}
	}
}
java

Här är re­sul­ta­tet:

194.518.552.1.17
6339
java

Hur man använder split() med gränspa­ra­me­tern

När du delar upp Java-strängar med split() kan du också använda den valfria pa­ra­me­tern limit. Pa­ra­me­tern limit begränsar antalet del­sträng­ar som skapas. Det finns tre al­ter­na­tiv här: att tilldela den ett värde mindre än 0, 0 eller större än 0.

split() med en gräns mindre än 0

Om du anger ett värde för limit som är mindre än 0 kommer det reguljära uttrycket att tillämpas utan be­gräns­ning på hela strängen. Den re­sul­te­ran­de matrisen kan ha valfri längd. Den koden kan se ut så här:

public class Main {
	public static void main(String[] args) {
		String x = "Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday ";
		String[] output = x.split(", ", -3);
		for (String y : output) {
			System.out.println(y);
		}
	}
}
java

Eftersom det finns ett mel­lanslag efter det sista ordet “Saturday” kommer arrayen att sluta med en tom sträng. Här är re­sul­ta­tet:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

split() med en gräns på 0

Om du ställer in pa­ra­me­tern limit på 0 kommer det reguljära uttrycket återigen att användas så många gånger som möjligt. Längden på arrayen är inte heller begränsad. Men om det sista elementet är en tom sträng kommer det inte att in­klu­de­ras i den re­sul­te­ran­de arrayen.

public class Main {
	public static void main(String[] args) {
		String x = "Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday ";
		String[] output = x.split(", ", 0);
		for (String y : output) {
			System.out.println(y);
		}
	}
}
java

Ut­mat­ning­en ser ut som ovan, men utan den sista strängen:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

split() med en gräns större än 0

Skill­na­den blir tydligare när du anger en gräns som är större än 0. Då avgörs hur många del­sträng­ar som kan matas ut.

public class Main {
	public static void main(String[] args) {
		String x = "Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday ";
		String[] output = x.split(", ", 3);
		for (String y : output) {
			System.out.println(y);
		}
	}
}
java

Vi får då ett resultat som skiljer sig avsevärt från ovanstå­en­de:

Sunday
Monday
Tuesday, Wednesday, Thursday, Friday, Saturday
java
Gå till huvudmeny