Metoden split() kan bruges til at opdele strenge i Java. Den in­de­hol­der en parameter for se­pa­ra­to­ren og en valgfri parameter for antallet af del­stren­ge. Der er også nogle særlige forhold, man skal være opmærksom på, når man bruger metoden. Vi forklarer alt, hvad du behøver at vide.

Hvad er split()?

Java-strenge sam­men­kæ­der tegn, cifre og spe­ci­al­tegn. De findes som objekter i klassen java.lang og oprettes og ændres med klassen String. I pro­gram­me­rings­spro­get Java kan du også opdele strenge i for­skel­li­ge del­stren­ge. Java’s split() bruges til at udtrække bestemte segmenter fra en streng eller til at opdele den i in­di­vi­du­el­le dele. Nedenfor viser vi dig mere de­tal­je­ret, hvad du kan gøre med metoden.

Når du opdeler en Java-streng med split(), får du en matrix med flere strenge. Dette bliver re­tur­vær­di­en.

Hvad er syntaksen i Java split()?

Den grund­læg­gen­de syntaks i Java split() er meget enkel, men kan udvides med valgfri parametre. Her er den grund­læg­gen­de version:

String[] split(String regex)
java

I dette eksempel vil outputtet være i form af en matrix. String er strengob­jek­tet. regex er den parameter, der bruges til at bestemme, hvor strengen skal opdeles. Pa­ra­me­te­ren er ikke ob­liga­to­risk, men anbefales.

Den ekstra valgfri parameter limit giver dig mulighed for at angive, hvor mange del­stren­ge der skal oprettes. Dens værdi er et heltal. Hvis den er nul eller negativ, vil alle del­stren­ge blive in­klu­de­ret i outputtet. Hvis du vælger en positiv værdi, vil du få det antal del­stren­ge i outputtet. Med den ekstra valgfri parameter limit vil syntaksen se således ud:

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

Sådan bruges split() med mellemrum som separator

Lad os se på nogle praktiske eksempler. Først opretter vi en streng, der in­de­hol­der 4 ord: ‘Dette er et eksempel’. Derefter opdeler vi strengen ved hjælp af split(). Den mest intuitive måde at opdele denne streng på er at bruge de allerede ek­si­ste­ren­de mellemrum mellem ordene. Sådan sker det 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 dette eksempel ini­ti­a­li­se­res en streng­va­ri­a­bel x. Derefter bruges Java’s split() på strengen. Pa­ra­me­te­ren søger efter mellemrum i strengen og opdeler den de steder, hvor den finder dem. Re­sul­ta­tet gemmes derefter i en matrix kaldet ‘output’. for bruges til at liste del­stren­ge­ne. Java-kom­man­do­en System.out.println giver os følgende output:

This
is
an
example
java

Sådan bruges komma som separator, med og uden mellemrum

Du kan også bruge split() i Java med strenge, der in­de­hol­der lister adskilt af kommaer. Du skal bare bruge et lille trick, fordi dine in­struk­tio­ner im­ple­men­te­res meget præcist i Java. Lad os først se på et eksempel uden tricket. Lad os sige, at vi har en liste over ugedagene, adskilt af kommaer. Disse kommaer er den perfekte separator til at indtaste i regex. Hvis vi opsætter koden på denne måde, vil den se således ud:

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 dette eksempel er re­sul­ta­tet ikke helt perfekt:

Sunday
 Monday
 Tuesday
 Wednesday
 Thursday
 Friday
 Saturday
java

Outputtet giver os en over­sku­e­lig liste over ugens dage. Dog in­de­hol­der alle værdier efter søndag et mellemrum før dagen. Da vi kun brugte komma som separator, blev mel­lem­rum­me­ne stående i op­de­lings­pro­ces­sen. For at få et mere over­sku­e­ligt output bør vi bruge både komma og mellemrum som separator. Hvis vi gør det, vil koden se således ud:

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

Outputtet er nu meget renere:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

Sådan opdeles Java-strenge med cifre

Du kan også bruge split() til at opdele Java-strenge, der består af cifre. I vores eksempel tager vi en lang nøgle, der er opdelt ved hjælp af punk­tum­mer og kolon. Hvis vi vil adskille cifrene efter kolon, vil koden se sådan ud:

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

Her er re­sul­ta­tet:

194.518.552.1.17
6339
java

Sådan bruges split() med pa­ra­me­te­ren limit

Når du opdeler Java-strenge med split(), kan du også bruge den valgfri limit. limit begrænser antallet af un­der­stren­ge, der oprettes. Der er tre mu­lig­he­der her: at tildele den en værdi mindre end 0, 0 eller større end 0.

split() med en grænse på mindre end 0

Hvis du indtaster en værdi for limit, der er mindre end 0, vil det regulære udtryk blive anvendt uden be­græns­ning på hele strengen. Det re­sul­te­ren­de array kan have en vilkårlig længde. Den kode kan se således ud:

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

Da der er et mellemrum efter det sidste ord ‘Saturday’, slutter arrayet med en tom streng. Her er re­sul­ta­tet:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

split() med en grænse på 0

Hvis du indstil­ler pa­ra­me­te­ren limit til 0, vil det regulære udtryk igen blive brugt så mange gange som muligt. Længden af arrayet er heller ikke begrænset. Men hvis det sidste element er en tom streng, vil det ikke blive in­klu­de­ret i det re­sul­te­ren­de array.

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

Outputtet ligner oven­stå­en­de, men uden den sidste streng:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

split() med en grænse større end 0

For­skel­len bliver mere tydelig, når du indstil­ler en grænse større end 0. Derefter bestemmer den, hvor mange del­stren­ge der kan udskrives.

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 derefter et resultat, der adskiller sig markant fra oven­stå­en­de:

Sunday
Monday
Tuesday, Wednesday, Thursday, Friday, Saturday
java
Gå til ho­ved­me­nu­en