Metóda split() sa dá použiť na rozdelenie reťazcov v Jave. Obsahuje parameter pre oddeľovač a voliteľný parameter pre počet podreťazcov. Pri používaní tejto metódy je potrebné vziať do úvahy aj niektoré špecifiká. Vysvetlíme vám všetko, čo potrebujete vedieť.

Čo je split()?

Java reťazce spájajú znaky, číslice a špeciálne znaky. Existujú ako objekty v triede java.lang a vytvárajú sa a upravujú pomocou triedy String. V programovacom jazyku Java môžete reťazce tiež rozdeliť na rôzne podreťazce. Funkcia split() v Jave sa používa na extrakciu určitých segmentov z reťazca alebo na jeho rozdelenie na jednotlivé časti. Nižšie vám ukážeme podrobnejšie, čo všetko môžete s touto metódou robiť.

Pri rozdelení reťazca Java pomocou split() získate pole s viacerými reťazcami. Toto sa stane vracanou hodnotou.

Aká je syntax Java split()?

Základná syntax Java split() je veľmi jednoduchá, ale dá sa rozšíriť o voliteľné parametre. Tu je základná verzia:

String[] split(String regex)
java

V tomto príklade bude výstup vo forme poľa. String je reťazcový objekt. regex je parameter, ktorý sa používa na určenie miesta, kde sa má reťazec rozdeliť. Parameter nie je povinný, ale je odporúčaný.

Dodatočný voliteľný parameter limit vám umožňuje určiť, koľko podreťazcov sa má vytvoriť. Jeho hodnota je celé číslo. Ak je nulová alebo záporná, všetky podreťazce budú zahrnuté do výstupu. Ak zvolíte kladnú hodnotu, vo výstupe sa zobrazí tento počet podreťazcov. S dodatočným voliteľným parametrom limit bude syntax vyzerať takto:

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

Ako používať split() s medzerou ako oddeľovačom

Pozrime sa na niekoľko praktických príkladov. Najskôr vytvoríme reťazec, ktorý obsahuje 4 slová: „Toto je príklad“. Potom reťazec rozdelíme pomocou split(). Najintuitívnejší spôsob rozdelenia tohto reťazca je použitie už existujúcich medzier medzi slovami. Takto to vyzerá v kóde:

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

V tomto príklade je inicializovaná reťazcová premenná x. Potom sa na reťazec použije Java split(). Parameter vyhľadáva v reťazci medzery a rozdeľuje ho na miestach, kde ich nájde. Výsledok sa potom uloží do poľa s názvom „output“. Slučka for sa používa na vymenovanie podreťazcov. Príkaz Java System.out.println nám poskytuje nasledujúci výstup:

This
is
an
example
java

Ako používať čiarku ako oddeľovač, s medzerami a bez medzier

V jazyku Java môžete použiť split() aj s reťazcami obsahujúcimi zoznamy oddelené čiarkami. Budete však musieť použiť malý trik, pretože v jazyku Java sú vaše pokyny implementované veľmi presne. Najskôr sa pozrime na príklad bez triku. Predpokladajme, že máme zoznam dní v týždni, oddelených čiarkami. Tieto čiarky sú ideálnym oddeľovačom pre zadanie do regex. Ak nastavíme kód týmto spôsobom, bude vyzerať takto:

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 tomto príklade nie je výstup úplne dokonalý:

Sunday
 Monday
 Tuesday
 Wednesday
 Thursday
 Friday
 Saturday
java

Výstup nám poskytuje prehľadný zoznam dní v týždni. Každá hodnota po nedeľi však obsahuje medzeru pred dňom. Keďže sme ako oddeľovač použili iba čiarku, medzery zostali v procese rozdeľovania. Aby sme získali prehľadnejší výstup, mali by sme ako oddeľovač použiť čiarku aj medzeru. Ak tak urobíme, kód bude vyzerať nasledovne:

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ýstup je teraz oveľa prehľadnejší:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

Ako rozdeliť reťazce Java s číslicami

Pomocou split() môžete tiež rozdeliť reťazce Java zložené z číslic. V našom príklade použijeme dlhý kľúč, ktorý je rozdelený pomocou bodiek a dvojbodky. Ak chceme oddelit číslice za dvojbodkou, kód bude vyzerať takto:

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

Tu je výstup:

194.518.552.1.17
6339
java

Ako používať split() s parametrom limit

Pri delení reťazcov Java pomocou split() môžete použiť aj voliteľný parameter limit. Parameter limit obmedzuje počet vytvorených podreťazcov. K dispozícii sú tri možnosti: priradenie hodnoty menšej ako 0, 0 alebo väčšej ako 0.

split() s limitom menším ako 0

Ak zadáte hodnotu limit, ktorá je menšia ako 0, regulárny výraz sa uplatní bez obmedzenia na celý reťazec. Výsledné pole môže mať ľubovoľnú dĺžku. Takýto kód môže vyzerať nasledovne:

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

Keďže za posledným slovom „Saturday“ je medzera, pole bude končiť prázdnym reťazcom. Tu je výstup:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

split() s limitom 0

Ak nastavíte parameter limit na hodnotu 0, regulárny výraz sa opäť použije toľkokrát, koľkokrát to bude možné. Dĺžka poľa nie je nijako obmedzená. Ak je však posledný prvok prázdny reťazec, nebude zahrnutý do výsledného poľa.

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ýstup vyzerá podobne ako vyššie, ale bez posledného reťazca:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
java

split() s limitom väčším ako 0

Rozdiel je zreteľnejší, ak nastavíte limit väčší ako 0. V takom prípade sa určí, koľko podreťazcov môže byť vygenerovaných.

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

Potom dostaneme výstup, ktorý sa výrazne líši od tých vyššie uvedených:

Sunday
Monday
Tuesday, Wednesday, Thursday, Friday, Saturday
java
Prejsť na hlavné menu