Del en streng i Java

1. Introduksjon

Splitting Strenger er en veldig hyppig operasjon; denne raske opplæringen er fokusert på noen av APIene vi kan bruke til å gjøre dette ganske enkelt i Java.

2. String.split ()

La oss starte med kjernebiblioteket - String klassen selv tilbyr en dele() metode - som er veldig praktisk og tilstrekkelig for de fleste scenarier. Det splitter ganske enkelt det gitte String basert på avgrenseren, og returnerer en rekke Strenger.

La oss se på noen eksempler. Vi begynner med å dele med komma:

String [] splitted = "peter, james, thomas" .split (",");

La oss dele med et mellomrom:

String [] splitted = "scooter for jeepbil" .split ("");

La oss også dele med en prikk:

Streng [] splitted = "192.168.1.178" .split ("\.")

La oss nå dele med flere tegn - et komma, mellomrom og bindestrek gjennom regex:

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

3. StringUtils.split ()

Apache's vanlige langpakke gir en StringUtils klasse - som inneholder en null-safe dele() metode, som deles ved å bruke mellomrom som standard skilletegn:

String [] splitted = StringUtils.split ("scooter for jeep");

Videre ignorerer den ekstra mellomrom:

String [] splitted = StringUtils.split ("scooter for jeep");

4. Splitter.split ()

Endelig er det en fin Splitter flytende API i Guava også:

List resultList = Splitter.on (',') .trimResults () .omitEmptyStrings () .splitToList ("bil, jeep ,, scooter"); 

5. Split og Trim

Noen ganger en gitt String inneholder noen ledende, etterfølgende eller ekstra mellomrom rundt avgrenseren. La oss se hvordan vi kan håndtere å dele inndata og trimme resultatene på en gang.

La oss si at vi har dette som en innspill:

Strenginngang = "bil, jeep, scooter";

For å fjerne ekstra mellomrom før og / eller etter avgrenseren, kan vi utføre split og trim ved hjelp av regex:

Streng [] splittet = input.trim (). Split ("\ s *, \ s *");

Her, listverk() metoden fjerner ledende og etterfølgende mellomrom i inngangsstrengen, og selve regexen håndterer de ekstra mellomrom rundt avgrenseren.

Vi kan oppnå det samme resultatet ved å bruke Java 8 Strøm funksjoner:

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

6. Konklusjon

String.split () er generelt nok. For mer komplekse tilfeller kan vi imidlertid bruke Apache's commons-lang-baserte StringUtils klasse, eller de rene og fleksible Guava API-ene.

Og som alltid er koden for artikkelen tilgjengelig på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found