Java Metoda split() ciągu z przykładem

⚡ Inteligentne podsumowanie

Podziel ciąg znaków Java Używając metody split(), która dzieli tekst w miejscach, gdzie znajduje się separator, i zwraca elementy jako tablicę ciągów znaków. Opcjonalny argument limit ogranicza liczbę wygenerowanych elementów, pozostawiając resztę nienaruszoną.

  • 🧩 Typ zwrotu: split() zwraca String[], nigdy pojedynczy String, więc wynik musi zostać przypisany do tablicy.
  • 🔤 Rozgranicznik to wyrażenie regularne: Argument jest wyrażeniem regularnym, więc znaki takie jak kropka i pionowa kreska muszą zostać usunięteping.
  • 🔢 Argument graniczny: Przekroczenie limitu 3 powoduje utworzenie dwóch oddzielnych fragmentów, a reszta tekstu pozostaje elementem końcowym.
  • Wzorzec odstępu: Wzorzec \\s pasuje do dowolnego pojedynczego znaku odstępu, który dzieli zdanie na słowa.
  • 🕳️. Spacje końcowe: Puste pola końcowe są odrzucane, chyba że podano limit ujemny.
  • 🔁 Wyniki czytania: Standardowa pętla for na całej długości tablicy drukuje każdy element w kolejności.

Java Metoda podziału łańcucha().

Do czego służy ciąg split(). Java?

split() metoda pozwala na rozbicie ciąg na podstawie konkretnego Java Rozdzielacz ciągu. Najczęściej rozdzielaczem jest spacja lub przecinek (,), w którym chcesz przerwać ciąg.

Składnia funkcji split().

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

⚠️ Uwaga dotycząca typu zwracanego: split() zwraca a String[] szyk, ani jednego String. Przypisanie wyniku do zwykłego String zmienna nie kompiluje się z błędem niezgodności typów, co jest najczęstszym błędem popełnianym przez początkujących stosujących tę metodę.

Parametr

  • Wyrażenie regularne: wyrażenie regularne stosowane do tekstu lub ciągu znaków.
  • Limit: Maksymalna liczba wartości w tablicy wynikowej. Jeśli zostanie pominięta lub będzie równa zero, zwracany jest każdy podciąg pasujący do wyrażenia regularnego.

Jak podzielić ciąg znaków Java z ogranicznikiem

Poniższy przykład pokazuje, jak podzielić ciąg znaków na Java z ogranicznikiem.

Załóżmy, że mamy zmienną łańcuchową o nazwie strMain składa się z kilku słów — Alfa, Beta, Gamma, Delta, Sigma — wszystkie rozdzielone przecinkiem (,).

 Podziel ciąg znaków Java

Tutaj, jeśli chcemy mieć wszystkie pojedyncze ciągi, najlepszym możliwym wzorcem byłoby podzielenie ich na podstawie przecinka. Otrzymamy więc pięć oddzielnych ciągów znaków w następujący sposób:

  • Alfa
  • beta
  • Gamma
  • Delta
  • Sigma

Użyj ciągu dzielić metoda w Java względem ciągu, który należy podzielić, i podaj separator jako argument.

W tym Java podziel ciąg znaków według wielkości ograniczników, separatorem jest przecinek (,), a wynikiem Java podział ciągu za pomocą przecinka da Ci podzieloną tablicę.

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]);
    }
  }
}

Pętla w kodzie po prostu wypisuje każde z nich Java oddziel ciąg od tablicy po funkcji podziału w Java, jak pokazano niżej.

Oczekiwany wynik:

Alpha
Beta
Delta
Gamma
Sigma

Przykład: Java Metoda string split() z wyrażeniem regularnym i długością

Rozważmy sytuację, w której potrzebujesz tylko pierwszych „n” elementów po funkcji podziału w Java, ale chcesz, aby reszta ciągu pozostała taka sama. Wynik powinien wyglądać mniej więcej tak:

  1. Alfa
  2. beta
  3. Delta, Gamma, Sigma

Można to osiągnąć, przekazując inny argument wraz z operacją split() w Javai to będzie limit wymaganych ciągów.

Rozważ następujący kod metody split w 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]);
    }
  }
}

Oczekiwany wynik:

Alpha
Beta
Delta, Gamma, Sigma

Należy pamiętać, że limit równy 3 daje dokładnie trzy elementy: dwa pierwsze separatory są honorowane, a wszystko po drugim separatorze jest zachowywane razem jako trzeci element.

Jak podzielić ciąg znaków Java przez Kosmos

Rozważmy sytuację, w której chcesz podzielić ciąg spacją. Mamy tu podzielony ciąg Java zmienna o imieniu strMain składa się z kilku słów: Witamy w 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]);
    }
  }
}

Oczekiwany wynik:

Welcome
to
Guru99

Wzór \\s dopasowuje pojedynczy znak odstępu. Użyj \\s+ zamiast tego, gdy słowa mogą być oddzielone więcej niż jedną spacją, w przeciwnym wypadku każda dodatkowa spacja powoduje powstanie pustego elementu.

Jak zachować puste ciągi podczas podziału Java

Jedno zachowanie split() zaskakuje prawie każdego, gdy spotyka się z nim po raz pierwszy: puste ciągi znaków są po cichu odrzucane. "a,b,," w przypadku przecinka zwraca dwa elementy, a nie cztery, ponieważ domyślny limit równy zero powoduje odrzucenie każdego pustego pola na końcu tablicy.

Ma to znaczenie, gdy dane są pozycyjne – na przykład wiersz CSV, w którym brakująca wartość na końcu nadal zajmuje kolumnę. Usunięcie tych pustych miejsc powoduje przesunięcie każdego indeksu w dół strumienia.

Przechodząc ujemny limit je ogranicza:

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

Trzy zasady obejmują każdy przypadek. Limit zero, który jest domyślny, stosuje wzorzec tak wiele razy, jak to możliwe, a następnie usuwa końcowe puste ciągi. pozytywny limit stosuje wzór maksymalnie do limit minus jeden razy, więc ostatni element zawiera nietkniętą resztę, dokładnie tak, jak pokazano we wcześniejszym przykładzie z limitem 3. ujemny limit stosuje wzór tak wiele razy, jak to możliwe i zachowuje każde puste pole, łącznie z polami końcowymi.

Wiodące puste ciągi zachowują się inaczej: rozszczepianie ",a,b" Zawsze zwraca pusty pierwszy element, niezależnie od limitu, ponieważ wzorzec pasuje do pozycji zerowej. Zapobiegaj temu, przycinając dane wejściowe lub filtrując wynikowy. szyk przed użyciem.

split() vs StringTokenizer vs Pattern.split(): Którego użyć

Java Oferuje trzy sposoby podziału ciągu na fragmenty. Różnią się one rodzajem akceptowanego separatora, tym, co zwracają, oraz tym, czy wzorzec jest kompilowany jednorazowo, czy rekompilowany przy każdym wywołaniu, co ma znaczenie, gdy podział następuje wewnątrz pętli.

WYGLĄD String.split() StringTokenizer Wzór.split()
Ogranicznik Wyrażenie regularne Zestaw pojedynczych znaków Wyrażenie regularne
Zwroty Strunowy[] Tokeny poprzez enumerację Strunowy[]
Skompilowany wzór Przy każdym połączeniu Nie dotyczy Raz, a potem ponownie użyte
Utrzymuje puste pola Tylko z limitem ujemnym Nigdy Tylko z limitem ujemnym
Status Polecane Dziedzictwo, zachowane dla zapewnienia kompatybilności Zalecane w pętlach

Zastosowanie String.split() do zwykłej, jednorazowej pracy, ponieważ jest najkrótszy do napisania i czytelny. Prekompiluj z Pattern.compile(",").split(text) podczas dzielenia wewnątrz pętli, ponieważ wyrażenie regularne jest wówczas kompilowane jednorazowo, a nie w każdej iteracji. Unikaj StringTokenizer w nowym kodzie; pozostaje on jedynie ze względu na kompatybilność wsteczną.

wspólny Java Błędy split() i jak je naprawić

Prawie każdy problem z split() tracPrzyczyny sprowadzają się do jednej z dwóch: argument jest wyrażeniem regularnym, a nie ciągiem znaków, lub reguły limitów opisane powyżej nieoczekiwanie odrzucają pola. Każdy błąd poniżej opisuje jego objaw i sposób rozwiązania.

  • Podział kropki zwraca pustą tablicę: "1.2.3".split(".") pasuje do każdego znaku, ponieważ kropka jest symbolem wieloznacznym wyrażenia regularnego. Użyj jej jako split("\\.").
  • Rozszczepienie rury zachowuje się dziwnie: Pion oznacza alternatywę w wyrażeniu regularnym. Zapisz to jako split("\\|").
  • Błąd niezgodności typów: wynik został przypisany do String. Zadeklaruj zmienną jako String[].
  • Nieoczekiwany pusty pierwszy element: Rozgranicznik pojawia się na początku danych wejściowych. Najpierw przytnij ciąg.
  • Brakujące wartości na końcu: końcowe puste pola zostały odrzucone zgodnie z domyślnym limitem. -1 jako drugi argument.
  • Wyjątek NullPointerException: split() Została wywołana na odwołaniu null. Przed podziałem sprawdź, czy istnieje null, ponieważ metoda nie może go obsłużyć.

FAQ

Użyj klasy znaków, jak w split("[,;]"), który jest dzielony przecinkiem lub średnikiem. Alternacja również działa: split(",|;").

Tak. Otocz tablicę Arrays.asList(text.split(",")) dla widoku o stałym rozmiarze lub new ArrayList<>(Arrays.asList(...)) gdy później lista będzie musiała zostać zmodyfikowana.

Tak. AI Narzędzia generują działający wzorzec na podstawie opisanego formatu i objaśniają każdy token. Przed zatwierdzeniem wyniku należy go przetestować w skrajnych przypadkach, takich jak puste pola i wartości w cudzysłowie.

Asystenci AI określają, czy przyczyną jest nieskorygowany metaznak, porzucone pole końcowe lub wiodący ogranicznik. Są to trzy wyjaśnienia nieoczekiwanej długości tablicy.

Tylko dla prostych danych. Nie obsługuje przecinków w polach w cudzysłowie ani wbudowanych podziałów wiersza, dlatego dedykowana biblioteka CSV jest bezpieczniejsza dla prawdziwych plików. Odczytuj je wiersz po wierszu za pomocą BufferedReader dobrze komponuje się z taką biblioteką.

Podsumuj ten post następująco: