Podijelite niz na Javi

1. Uvod

Cijepanje Žice je vrlo česta operacija; ovaj je brzi vodič usredotočen na neke API-je koje možemo koristiti za to jednostavno na Javi.

2. String.split ()

Počnimo s osnovnom knjižnicom - Niz klasa sama nudi a podjela() metoda - koja je vrlo prikladna i dovoljna za većinu scenarija. Jednostavno dijeli dano Niz na temelju graničnika, vraćajući niz Žice.

Pogledajmo neke primjere. Započet ćemo dijeljenjem zarezom:

Niz [] podijeljen = "peter, james, thomas" .split (",");

Podijelimo razmak:

String [] splitted = "auto džip skuter" .split ("");

Podijelimo i točku:

Niz [] podijeljen = "192.168.1.178" .split ("\.")

Podijelimo sada višestruke znakove - zarez, razmak i crticu kroz regex:

Niz [] podijeljen = "b a, e, l.d u, n g" .split ("\ s + |, \ s * | \. \ s *"));

3. StringUtils.split ()

Apacheov uobičajeni lang paket nudi a StringUtils klasa - koja sadrži null-safe podjela() metoda koja se razdvaja pomoću razmaka kao zadanog graničnika:

String [] splitted = StringUtils.split ("auto džip skuter");

Nadalje, zanemaruje suvišne razmake:

String [] splitted = StringUtils.split ("auto džip skuter");

4. Splitter.split ()

Napokon, tu je i lijepo Cjepidlaka tečni API i u Guavi:

Popis rezultataList = Splitter.on (',') .trimResults () .omitEmptyStrings () .splitToList ("auto, jeep ,, skuter"); 

5. Split i Trim

Ponekad dano Niz sadrži neke vodeće, prateće ili dodatne prostore oko graničnika. Pogledajmo kako se možemo nositi s dijeljenjem unosa i obrezivanjem rezultata u jednom potezu.

Recimo da imamo ovo kao ulaz:

String input = "auto, džip, skuter";

Da bismo uklonili suvišne razmake prije i / ili nakon graničnika, možemo izvršiti dijeljenje i obrezivanje pomoću regexa:

Niz [] podijeljen = input.trim (). Split ("\ s *, \ s *");

Ovdje, obrezati () metoda uklanja početni i prateći razmak u ulaznom nizu, a sam regularni izraz obrađuje dodatne prostore oko graničnika.

Isti rezultat možemo postići korištenjem Jave 8 Stream značajke:

String [] splitted = Arrays.stream (input.split (",")) .map (String :: trim) .toArray (String [] :: new);

6. Zaključak

String.split () je općenito dovoljno. Međutim, za složenije slučajeve možemo koristiti Apacheov zajednički jezik StringUtils klase ili čisti i fleksibilni API-ji Guava.

I kao i uvijek, kôd članka dostupan je na GitHub-u.