A split() módszer használható karakterláncok felosztására Java-ban. Tartalmaz egy paramétert a szeparátorhoz és egy opcionális paramétert az alkaraktersorozatok számához. A módszer használatakor néhány sajátosságot is figyelembe kell venni. Elmagyarázzuk mindazt, amit tudnia kell.

Mi az a split()?

A Java karakterláncok karaktereket, számokat és speciális karaktereket fűznek össze. Ezek a java.lang osztályban objektumokként léteznek, és a String osztály segítségével hozhatók létre és módosíthatók. A Java programozási nyelvben a karakterláncokat különböző alkaraktersorozatokra is fel lehet bontani. A Java split() metódusával bizonyos szegmenseket lehet kivonni egy karakterláncból, vagy azt egyedi részekre fel lehet bontani. Az alábbiakban részletesebben bemutatjuk, hogy mit lehet tenni ezzel a metódussal.

Ha egy Java karakterláncot split() segítségével felosztunk, akkor több karakterláncot tartalmazó tömböt kapunk. Ez lesz a visszatérési érték.

Mi a Java split() szintaxisa?

A Java split() alapvető szintaxisa nagyon egyszerű, de opcionális paraméterekkel bővíthető. Íme az alapváltozat:

String[] split(String regex)
java

Ebben a példában a kimenet tömb formájában lesz. String a karakterlánc objektum. regex az a paraméter, amely meghatározza, hol kell felosztani a karakterláncot. A paraméter nem kötelező, de ajánlott.

A kiegészítő opcionális limit paraméterrel megadhatja, hogy hány alkaraktersorozatot szeretne létrehozni. Értéke egész szám. Ha nulla vagy negatív, akkor az összes alkaraktersorozat bekerül a kimenetbe. Ha pozitív értéket választ, akkor a kimenetben annyi alkaraktersorozat lesz, amennyit megadott. A kiegészítő opcionális limit paraméterrel a szintaxis a következő lesz:

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

Hogyan használjuk split() szóközzel elválasztva?

Nézzünk meg néhány gyakorlati példát. Először létrehozunk egy karakterláncot, amely 4 szót tartalmaz: „Ez egy példa”. Ezután split() segítségével felosztjuk a karakterláncot. A karakterlánc felosztásának leg intuitívabb módja a szavak között már meglévő szóközök használata. Íme, hogyan történik ez a kódban:

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

Ebben a példában egy x nevű karakterlánc változót inicializálunk. Ezután a Java split() parancsot alkalmazzuk a karakterláncra. A paraméter a karakterláncban a szóközöket keresi, és azokat a helyeken osztja szét, ahol megtalálja őket. Az eredményt ezután egy „output” nevű tömbben tároljuk. A for ciklust az alkaraktersorozatok felsorolásához használjuk. A Java System.out.println parancs a következő kimenetet adja:

This
is
an
example
java

Hogyan használjuk a vesszőt elválasztóként, szóközökkel és szóközök nélkül?

A Java nyelvben split() olyan karakterláncokkal is használhatja, amelyek vesszővel elválasztott listákat tartalmaznak. Ehhez csak egy kis trükköt kell alkalmaznia, mivel a Java nyelvben az utasítások nagyon pontosan kerülnek végrehajtásra. Először nézzünk meg egy példát a trükk nélkül. Tegyük fel, hogy van egy lista a hét napjairól, amelyeket vessző választ el egymástól. Ezek a vesszők tökéletes elválasztóként szolgálnak regex-ba való bevitelhez. Ha így állítjuk be a kódot, az a következőképpen fog kinézni:

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

Ebben a példában a kimenet nem teljesen tökéletes:

Sunday
 Monday
 Tuesday
 Wednesday
 Thursday
 Friday
 Saturday
java

A kimenet egy világos listát ad a hét napjairól. Azonban minden vasárnap utáni érték előtt szóköz található. Mivel csak vesszőt használtunk elválasztóként, a szóközök a felosztás során ott maradtak. A tisztább kimenet érdekében vesszőt és szóközöt is elválasztóként kell használnunk. Ha így teszünk, a kód a következőképpen fog kinézni:

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

A kimenet most már sokkal tisztább:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

Hogyan lehet számokkal elválasztani a Java karakterláncokat?

split() használhatja számokból álló Java karakterláncok felosztására is. Példánkban egy hosszú kulcsot veszünk, amelyet pontok és kettőspontok választanak el egymástól. Ha a kettőspont után álló számokat szeretnénk elválasztani, a kód így fog kinézni:

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

Itt van az eredmény:

194.518.552.1.17
6339
java

A split() használata a limit paraméterrel

A Java karakterláncok split() felosztásakor az opcionális limit paramétert is használhatja. A limit paraméter korlátozza a létrehozott alkaraktersorozatok számát. Itt három lehetőség közül választhat: 0-nál kisebb, 0 vagy 0-nál nagyobb értéket rendelhet hozzá.

split(), amelynek határa kisebb, mint 0

Ha limit értékre 0-nál kisebb értéket ad meg, akkor a reguláris kifejezés korlátozás nélkül alkalmazásra kerül az egész karakterláncra. Az eredményül kapott tömb hossza tetszőleges lehet. A kód a következőképpen nézhet ki:

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

Mivel az utolsó szó, „Saturday” után szóköz van, a tömb egy üres karakterlánccal végződik. Íme a kimenet:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

split(), 0-as határértékkel

Ha a limit paramétert 0-ra állítja, a reguláris kifejezés ismét a lehető legtöbb alkalommal kerül felhasználásra. A tömb hossza sem korlátozott. Ha azonban az utolsó elem egy üres karakterlánc, akkor az nem kerül be a kapott tömbbe.

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

A kimenet hasonló a fentihez, de a végső karakterlánc nélkül:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

split(), ahol a határérték nagyobb, mint 0

A különbség még nyilvánvalóbbá válik, ha 0-nál nagyobb értéket állít be. Ez meghatározza, hogy hány alkaraktersorozatot lehet kinyomtatni.

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

Ekkor a fenti eredményektől jelentősen eltérő eredményt kapunk:

Sunday
Monday
Tuesday, Wednesday, Thursday, Friday, Saturday
java
Ugrás a főmenübe