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.