Meetodit split() saab kasutada stringide ja­ga­miseks Java-s. See sisaldab pa­ra­meet­rit eraldaja jaoks ja va­li­ku­list pa­ra­meet­rit alamst­rin­gide arvu jaoks. Meetodi ka­su­ta­misel tuleb arvestada ka mõningate eri­pä­ra­dega. Selgitame kõike, mida peate teadma.

Mis on split()?

Java stringid ühendavad tähemärke, numbreid ja erimärke. Need ek­sis­tee­rivad ob­jek­ti­dena klassis java.lang ja neid luuakse ja muu­de­takse klassiga String. Java prog­ram­mee­ri­mis­kee­les saab stringe ka eri­ne­va­teks ala­jao­tus­teks jagada. Java funkt­siooni split() ka­su­ta­takse stringist teatud seg­men­tide eral­da­miseks või stringi ük­si­ku­teks osadeks ja­ga­miseks. Allpool näitame teile ük­sik­as­ja­li­ku­malt, mida selle meetodiga teha saab.

Kui jagate Java stringi split() abil, saate massiivi mitme stringiga. See muutub ta­gas­ta­ta­vaks väär­tu­seks.

Mis on Java split() süntaks?

Java split() põhiline süntaks on väga lihtne, kuid seda saab laiendada va­li­ku­liste pa­ra­meet­ri­tega. Siin on põhiline versioon:

String[] split(String regex)
java

Selles näites on väljund massiivi kujul. String on string-objekt. regex on pa­ra­mee­ter, mida ka­su­ta­takse stringi jagamise koha mää­ra­miseks. Pa­ra­mee­ter ei ole ko­hus­tus­lik, kuid soo­vi­ta­tav.

Li­sa­va­li­ku­line pa­ra­mee­ter limit võimaldab määrata, kui palju ala­jao­tusi tuleks luua. Selle väärtus on täisarv. Kui see on null või ne­ga­tiivne, lisatakse väl­jun­disse kõik ala­jao­tu­sed. Kui valite po­si­tiivse väärtuse, saate väl­jun­disse selle arvu ala­jao­tusi. Li­sa­va­li­ku­lise pa­ra­meet­riga limit on süntaks järgmine:

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

Kuidas kasutada split() koos tühikuga eral­da­jana

Vaadakem mõningaid prak­tilisi näiteid. Esiteks loome stringi, mis sisaldab 4 sõna: „This is an example”. Seejärel jagame stringi split() abil. Kõige in­tui­tiiv­sem viis stringi ja­ga­miseks on kasutada sõnade vahel juba ole­mas­ole­vaid tühikuid. Siin on näide, kuidas see koodis toimub:

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

Selles näites alg­väär­tus­ta­takse string-muutuja x. Seejärel ka­su­ta­takse stringi suhtes Java split(). Pa­ra­mee­ter otsib stringist tühikuid ja jagab selle kohtades, kus neid leiab. Tulemus sal­ves­ta­takse massiivi nimega „output”. Silmust for ka­su­ta­takse alamst­rin­gide loet­le­miseks. Java käsk System.out.println annab meile järgmise väljundi:

This
is
an
example
java

Kuidas kasutada koma eral­da­jana, tühikute ja tühikute vahel

Java-keeles saab split() kasutada ka komadega eraldatud loen­di­tega stringide puhul. Selleks on vaja kasutada väikest trikki, kuna Java-keeles ra­ken­da­takse juhiseid väga täpselt. Esmalt vaatame näidet ilma trikita. Oletame, et meil on komadega eraldatud nä­da­la­päe­vade nimekiri. Need komad on ideaalsed eraldajad, et sisestada regex-sse. Kui me sea­dis­tame koodi selliselt, näeb see välja järgmine:

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

Selles näites ei ole väljund päris täiuslik:

Sunday
 Monday
 Tuesday
 Wednesday
 Thursday
 Friday
 Saturday
java

Väljund annab meile selge loetelu nä­da­la­päe­va­dest. Siiski sisaldab iga pü­ha­päe­vale järgnev väärtus tühikut enne päeva. Kuna ka­su­ta­sime eral­da­jana ainult koma, jäid tühikud jagamise prot­ses­sis sinna alles. Puhtama väljundi saamiseks peaksime eral­da­jana kasutama nii koma kui ka tühikut. Kui teeme seda, näeb kood välja järgmine:

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

Väljund on nüüd palju puhtam:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

Kuidas jagada Java stringid numb­ri­tega

Võite kasutada split() ka numb­ri­test koos­ne­vate Java-stringide ja­ga­miseks. Meie näites võtame pika võtme, mis on jagatud punktide ja kooloniga. Kui soovime eraldada numbrid kooloni järel, näeks kood välja järgmine:

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

Siin on väljund:

194.518.552.1.17
6339
java

Kuidas kasutada split() koos piiran­gu­pa­ra­meet­riga

Java-stringide jagamisel split() võite kasutada ka va­li­ku­list pa­ra­meet­rit limit. Pa­ra­mee­ter limit piirab loodavate alast­rin­gide arvu. Siin on kolm võimalust: määrata sellele väärtus väiksem kui 0, 0 või suurem kui 0.

split(), mille piir on väiksem kui 0

Kui sisestate väärtuse limit, mis on väiksem kui 0, ra­ken­da­takse re­gu­laar­aval­dist piiran­guta kogu stringile. Saadud massiiv võib olla mis tahes pikkusega. See kood võib välja näha järgmine:

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

Kuna viimase sõna „Saturday” järel on tühik, lõpeb massiiv tühja stringiga. Siin on väljund:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

split() piiran­guga 0

Kui sea­dis­tate pa­ra­meetri limit väär­tu­seks 0, ka­su­ta­takse re­gu­laar­aval­dist taas nii palju kordi kui võimalik. Massiivi pikkus ei ole samuti piiratud. Kuid kui viimane element on tühi string, ei lisata seda tu­le­mus­mas­siivi.

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

Väljund on sarnane eespool tooduga, kuid ilma viimase stringita:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

split(), mille piir on suurem kui 0

Erinevus muutub selgemaks, kui sea­dis­tate piir­väär­tuse suuremaks kui 0. Siis määrab see, kui palju alamst­ringe saab väl­jas­tada.

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

Siis saame tulemuse, mis erineb oluliselt eespool toodutest:

Sunday
Monday
Tuesday, Wednesday, Thursday, Friday, Saturday
java
Go to Main Menu