Java Metoda String split() s příkladem
⚡ Chytré shrnutí
Rozdělte řetězec Java pomocí metody split(), která rozdělí text všude, kde se shoduje oddělovač, a vrátí jednotlivé části jako pole typu String. Volitelný argument limit omezuje počet vygenerovaných částí a zbytek ponechává beze změny.

Co je řetězec split() v Java?
Jedno split() metoda vám umožňuje prolomit šňůra na základě konkrétního Java oddělovač řetězců. Nejčastěji je oddělovačem mezera nebo čárka (,), u které chcete řetězec zalomit.
syntaxe funkce split().
public String[] split(String regex) public String[] split(String regex, int limit)
⚠️ Poznámka k typu návratové hodnoty: split() vrací String[] řada, ani jeden StringPřiřazení výsledku rovině String Proměnná se nezkompiluje s chybou nekompatibilních typů, což je nejčastější chyba, které se začátečníci s touto metodou dopouštějí.
Parametr
- Regulární výraz: regulární výraz aplikovaný na text nebo řetězec.
- Omezit: maximální počet hodnot ve výsledném poli. Pokud je vynechán nebo je nulový, vrátí se každý podřetězec odpovídající regulárnímu výrazu.
Jak rozdělit řetězec Java s oddělovačem
Níže uvedený příklad ukazuje, jak rozdělit řetězec na Java s oddělovačem.
Předpokládejme, že máme pojmenovanou řetězcovou proměnnou strMain složený z několika slov – Alfa, Beta, Gama, Delta, Sigma – všechny znaky oddělené čárkou (,).
Pokud zde chceme všechny jednotlivé řetězce, nejlepším možným vzorem by bylo rozdělit je na základě čárky. Získáme tedy pět samostatných řetězců takto:
- Alpha
- Beta
- Gamma
- Delta
- Sigma
Použijte řetězec rozdělit metoda v Java proti řetězci, který má být rozdělen, a jako argument uveďte oddělovač.
V tomto Java rozdělte řetězec podle velikosti písmen, oddělovač je čárka (,) a výsledek Java operace rozdělení řetězce čárkou vám poskytne rozdělení pole.
class StrSplit{
public static void main(String []args){
String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
String[] arrSplit = strMain.split(", ");
for (int i=0; i < arrSplit.length; i++)
{
System.out.println(arrSplit[i]);
}
}
}
Smyčka v kódu pouze vytiskne každý Java rozdělit řetězec z pole po funkci split v Java, Jak je ukázáno níže.
Očekávaný výstup:
Alpha Beta Delta Gamma Sigma
Příklad: Java Metoda String split() s regulárním výrazem a délkou
Uvažujme situaci, kdy potřebujete pouze prvních 'n' prvků za funkcí split v Java, ale chtějí, aby zbytek řetězce zůstal tak, jak je. Výstup něco jako toto:
- Alpha
- Beta
- Delta, Gamma, Sigma
Toho lze dosáhnout předáním dalšího argumentu spolu s operací split() v Java, a to bude limit požadovaných řetězců.
Uvažujme následující kód metody split v Java:
class StrSplit2{
public static void main(String []args){
String strMain = "Alpha, Beta, Delta, Gamma, Sigma";
String[] arrSplit_2 = strMain.split(", ", 3);
for (int i=0; i < arrSplit_2.length; i++){
System.out.println(arrSplit_2[i]);
}
}
}
Očekávaný výstup:
Alpha Beta Delta, Gamma, Sigma
Všimněte si, že limit 3 vytváří přesně tři prvky: první dva oddělovače jsou respektovány a vše za druhým oddělovačem je uchováváno pohromadě jako třetí prvek.
Jak rozdělit řetězec Java vesmírem
Uvažujme situaci, kdy chcete rozdělit řetězec mezerou. Zde máme rozdělený řetězec Java proměnlivý pojmenovaný strMain složené z několika slov: Vítejte v Guru99.
public class StrSplit3{
public static void main(String args[]){
String strMain = "Welcome to Guru99";
String[] arrSplit_3 = strMain.split("\\s");
for (int i=0; i < arrSplit_3.length; i++){
System.out.println(arrSplit_3[i]);
}
}
}
Očekávaný výstup:
Welcome to Guru99
Vzor \\s odpovídá jednomu mezerovému znaku. Použijte \\s+ místo toho, když slova mohou být oddělena více než jednou mezerou, jinak každá další mezera vytváří prázdný prvek.
Jak zachovat prázdné řetězce při rozdělení Java
Jedno chování split() překvapí téměř každého, když se s ním poprvé setká: prázdné řetězce, které zbývají za sebou, jsou tiše zahozeny. Rozdělení "a,b,," na čárku vrací dva prvky, ne čtyři, protože výchozí limit nula zahodí všechna prázdná pole na konci pole.
To je důležité vždy, když jsou data poziční – například řádek CSV, kde chybějící hodnota na konci stále zabírá sloupec. Ztráta těchto mezer posune všechny následné indexy.
Předávání a negativní limit je udržuje:
String row = "Alpha,Beta,,"; // Default: trailing empty fields removed -> length 2 String[] a = row.split(","); System.out.println(a.length); // prints 2 // Negative limit: every field preserved -> length 4 String[] b = row.split(",", -1); System.out.println(b.length); // prints 4
Každý případ se vztahuje na tři pravidla. Limit nula, což je výchozí nastavení, použije vzor tolikrát, kolikrát je to možné, a poté odstraní prázdné řetězce. pozitivní Funkce limit použije vzor maximálně jednou, takže poslední prvek obsahuje nedotčený zbytek, přesně jak ukázal předchozí příklad s limitem 3. A negativní Funkce limit použije vzor tolikrát, kolikrát je to možné, a ponechá všechna prázdná pole, včetně těch koncových.
Úvodní prázdné řetězce se chovají opět jinak: rozdělení ",a,b" Vždy vrátí prázdný první prvek bez ohledu na limit, protože vzor se shoduje na pozici nula. Chraňte se před tím ořezáním vstupu nebo filtrováním výsledného řada před použitím.
split() vs. StringTokenizer vs. Pattern.split(): Který použít
Java nabízí tři způsoby, jak rozdělit řetězec na části. Liší se typem oddělovače, který každý z nich přijímá, tím, co vrací, a tím, zda je vzor kompilován jednou, nebo znovu kompilován při každém volání, což je důležité, jakmile k rozdělení dojde uvnitř smyčky.
| Vzhled | String.split() | StringTokenizer | Pattern.split() |
|---|---|---|---|
| Oddělovač | Regulární výraz | Sada jednotlivých znaků | Regulární výraz |
| Vrácení zboží | Tětiva[] | Tokeny prostřednictvím výčtu | Tětiva[] |
| Vzor sestaven | Při každém hovoru | Nehodí | Jednou, pak znovu použito |
| Ponechává prázdná pole | Pouze s negativní limitou | nikdy | Pouze s negativní limitou |
| Status | Doporučená | Starší verze, zachována pro kompatibilitu | Doporučeno ve smyčkách |
Použijte String.split() pro běžnou jednorázovou práci, protože je nejkratší na zápis a srozumitelně se čte. Předkompilujte s Pattern.compile(",").split(text) při rozdělení uvnitř smyčky, protože regulární výraz se pak kompiluje pouze jednou, a ne při každé iteraci. Vyhněte se StringTokenizer v novém kódu; zůstává pouze kvůli zpětné kompatibilitě.
Společný Java Chyby split() a jak je opravit
Téměř každý problém s split() tracTo se vrací k jedné ze dvou příčin: argument je regulární výraz, nikoli doslovný řetězec, nebo limitní pravidla popsaná výše neočekávaně zahazují pole. Každá níže uvedená chyba pojmenovává svůj příznak a opravu.
- Rozdělení na tečku vrátí prázdné pole:
"1.2.3".split(".")odpovídá každému znaku, protože tečka je zástupný znak regulárního výrazu. Umožňuje escapovat jakosplit("\\."). - Rozdělení potrubí se chová podivně: Svislá čára v regexu znamená střídání. Unikněte jí jako
split("\\|"). - Chyba nekompatibilních typů: výsledek byl přiřazen k
StringDeklarujte proměnnou jakoString[]. - Neočekávaný prázdný první prvek: Oddělovač se objeví na začátku vstupu. Nejprve ořízněte řetězec.
- Chybějící hodnoty na konci: Koncová prázdná pole byla zahozena výchozím limitem.
-1jako druhý argument. - Výjimka NullPointer:
split()byla volána na nulovou referenci. Před rozdělením zkontrolujte hodnotu null, protože metoda ji nedokáže zpracovat.

