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.