Metode split() var tikt izmantota, lai sadalītu virknes Java. Tā satur parametru at­da­lī­tā­jam un papildu parametru ap­akš­virkņu skaitam. Ir arī dažas īpatnības, kas jāņem vērā, iz­man­to­jot šo metodi. Mēs iz­skaid­ro­sim visu, kas jums jāzina.

Kas ir split()?

Java virknes savieno rakstzī­mes, ciparus un īpašos simbolus. Tās pastāv kā objekti klasē java.lang un tiek iz­vei­do­tas un mo­di­fi­cē­tas ar String klasi. Java prog­ram­mē­ša­nas valodā virknes var arī sadalīt dažādās ap­akš­vir­knēs. Java split() tiek izmantots, lai izvilktu noteiktus segmentus no virknes vai sadalītu to at­se­viš­ķās daļās. Tur­pi­nā­ju­mā mēs parādīsim sīkāk, ko var izdarīt ar šo metodi.

Dalot Java virkni ar split(), jūs iegūsiet masīvu ar vairākām virknēm. Tas kļūst par at­grie­ša­nas vērtību.

Kāda ir Java split() sintakse?

Java split() pamata sintakse ir ļoti vienkārša, bet to var pa­pla­ši­nāt ar papildu pa­ra­met­riem. Šeit ir pamata versija:

String[] split(String regex)
java

Šajā piemērā izvade būs masīva veidā. String ir string objekts. regex ir parametrs, kas tiek izmantots, lai noteiktu, kur string ir jāsadala. Parametrs nav obligāts, bet tā iz­man­to­ša­na ir ieteicama.

Papildu fa­kul­ta­tī­vais parametrs limit ļauj norādīt, cik daudz ap­akš­virknes ir jāizveido. Tā vērtība ir vesels skaitlis. Ja tā ir nulle vai negatīva, izvades rezultātā tiks iekļautas visas ap­akš­virknes. Ja iz­vē­la­ties pozitīvu vērtību, izvades rezultātā tiks iekļauts no­rā­dī­tais ap­akš­virkņu skaits. Ar papildu fa­kul­ta­tī­vo parametru limit sintakse iz­ska­tī­sies šādi:

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

Kā lietot split() ar atstarpi kā at­da­lī­tā­ju

Ap­ska­tī­sim dažus prak­tis­kus piemērus. Vispirms iz­vei­do­sim virkni, kas satur 4 vārdus: „This is an example”. Tad sadalīsim virkni, iz­man­to­jot split(). In­tui­tī­vā­kais veids, kā sadalīt šo virkni, ir izmantot jau esošos atstarpes starp vārdiem. Šeit ir redzams, kā tas notiek kodā:

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

Šajā piemērā tiek ini­cia­li­zē­ta string mainīgā x. Tad uz string tiek izmantota Java split(). Parametrs meklē stringā atstarpes un sadala to vietās, kur tās atrod. Rezultāts tiek saglabāts masīvā ar nosaukumu “output”. for cilpa tiek izmantota, lai uz­skai­tī­tu ap­akš­strin­gus. Java komanda System.out.println mums dod šādu rezultātu:

This
is
an
example
java

Kā lietot komatu kā at­da­lī­tā­ju, ar atstarpēm un bez tām

Jūs varat izmantot split() arī Java valodā ar virknēm, kas satur ar komatiem atdalītus sarakstus. Jums vienkārši būs jāizmanto neliels triks, jo Java valodā jūsu ins­truk­ci­jas tiek īstenotas ļoti precīzi. Vispirms ap­ska­tī­sim piemēru bez trika. Teiksim, ka mums ir saraksts ar nedēļas dienām, kas atdalītas ar komatiem. Šie komati ir ideāls at­da­lī­tājs, lai ievadītu regex. Ja mēs iz­vei­do­jam kodu šādā veidā, tas iz­ska­tī­sies šādi:

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

Šajā piemērā rezultāts nav pilnīgi ideāls:

Sunday
 Monday
 Tuesday
 Wednesday
 Thursday
 Friday
 Saturday
java

Rezultāts mums sniedz skaidru nedēļas dienu sarakstu. Tomēr katrai vērtībai pēc svēt­die­nas pirms dienas ir atstarpe. Tā kā mēs iz­man­to­jām tikai komatu kā at­da­lī­tā­ju, atstarpes palika tur arī sa­da­lī­ša­nas procesā. Lai iegūtu skaidrāku rezultātu, mums jāizmanto gan komats, gan atstarpe kā at­da­lī­tājs. Ja to izdarīsim, kods iz­ska­tī­sies šādi:

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

Rezultāts tagad ir daudz skaidrāks:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

Kā sadalīt Java virknes ar cipariem

Jūs varat arī izmantot split(), lai sadalītu Java virknes, kas sastāv no cipariem. Mūsu piemērā mēs iz­man­to­sim garu atslēgu, kas ir sadalīta, iz­man­to­jot punktus un defisi. Ja mēs vēlamies atdalīt ciparus pēc defises, kods iz­ska­tī­sies šādi:

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

Šeit ir rezultāts:

194.518.552.1.17
6339
java

Kā lietot split() ar ie­ro­be­žo­ju­ma parametru

Dalot Java virknes ar split(), varat izmantot arī papildu parametru limit. Parametrs limit ierobežo izveidoto ap­akš­virkņu skaitu. Šeit ir trīs iespējas: piešķirt tam vērtību, kas ir mazāka par 0, 0 vai lielāka par 0.

split() ar robežu mazāku par 0

Ja ievadāt vērtību limit, kas ir mazāka par 0, re­gu­lā­rais izteiksme tiks piemērota bez ie­ro­be­žo­ju­ma visai virknei. Rezultātā iegūtais masīvs var būt jebkura garuma. Šis kods var iz­ska­tī­ties šādi:

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

Tā kā pēc pēdējā vārda „Saturday” ir atstarpe, masīvs beigsies ar tukšu virkni. Šeit ir izvade:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

split() ar ie­ro­be­žo­ju­mu 0

Ja iestatāt parametru limit uz 0, re­gu­lā­rais izteiksme atkal tiks izmantota tik reižu, cik vien iespējams. Masīva garums arī netiek ie­ro­be­žots. Taču, ja pēdējais elements ir tukša virkne, tas netiks iekļauts rezultātā iegūtajā masīvā.

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

Rezultāts izskatās līdzīgi kā iepriekš, bet bez pēdējās virknes:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

split() ar limitu, kas lielāks par 0

Atšķirība kļūst vēl iz­teik­tā­ka, ja iestatāt robežu, kas ir lielāka par 0. Tad tā noteiks, cik daudz ap­akš­virknes var izvadīt.

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

Tad iegūsim rezultātu, kas būtiski atšķiras no iepriekš mi­nē­ta­jiem:

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