Rozdelte reťazec v jazyku Java
1. Úvod
Štiepanie Struny je veľmi častá operácia; tento rýchly tutoriál je zameraný na niektoré API, ktoré môžeme použiť na to jednoducho v Jave.
2. String.split ()
Začnime s hlavnou knižnicou - String trieda sama ponúka a split () metóda - ktorá je pre väčšinu scenárov veľmi pohodlná a postačujúca. Jednoducho to rozdelí dané String na základe oddeľovača vráti pole Struny.
Pozrime sa na niekoľko príkladov. Začneme rozdelením čiarkou:
Reťazec [] splitted = "peter, james, thomas" .split (",");
Rozdeľme sa o medzery:
Reťazec [] splitted = "automobilový jeepový skúter" .split ("");
Rozdeľme sa tiež bodkou:
Reťazec [] splitted = "192.168.1.178" .split ("\.")
Rozdeľme sa teraz na viac znakov - čiarka, medzera a spojovník pomocou regulárneho výrazu:
Reťazec [] splitted = "b a, e, l.d u, n g" .split ("\ s + |, \ s * | \. \ s *"));
3. StringUtils.split ()
Spoločný balík jazykov Apache poskytuje StringUtils trieda - ktorá obsahuje nulový trezor split () metóda, ktorá sa rozdelí pomocou medzery ako predvoleného oddeľovača:
String [] splitted = StringUtils.split ("automobilový jeepový skúter");
Ďalej ignoruje medzery navyše:
String [] splitted = StringUtils.split ("automobilový jeepový skúter");
4. Splitter.split ()
Konečne je tu pekne Rozdeľovač plynulé API aj na Guave:
Zoznam resultList = Splitter.on (',') .trimResults () .omitEmptyStrings () .splitToList ("auto, jeep ,, skúter");
5. Rozdeľte a orezajte
Niekedy daná String obsahuje nejaké začiatočné, koncové alebo extra medzery okolo oddeľovača. Pozrime sa, ako zvládneme rozdelenie vstupu a orezanie výsledkov jedným ťahom.
Povedzme, že to máme ako vstup:
Reťazcový vstup = "auto, džíp, skúter";
Ak chcete odstrániť medzery pred a / alebo za oddeľovačom, môžeme vykonať rozdelenie a orezanie pomocou regulárneho výrazu:
Reťazec [] splitted = input.trim (). Split ("\ s *, \ s *");
Tu, trim () metóda odstráni úvodné a koncové medzery vo vstupnom reťazci a samotný regulárny výraz spracováva ďalšie medzery okolo oddeľovača.
Rovnaký výsledok môžeme dosiahnuť použitím Java 8 Prúd Vlastnosti:
String [] splitted = Arrays.stream (input.split (",")) .map (String :: trim) .toArray (String [] :: new);
6. Záver
String.split () je všeobecne dosť. V zložitejších prípadoch však môžeme použiť Apache založený na Commons-Lang StringUtils triedy alebo čisté a flexibilné rozhrania API Guava.
A ako vždy je kód článku k dispozícii na GitHub.