Opdel en streng i Java

1. Introduktion

Opdeling Strenge er en meget hyppig operation; denne hurtige tutorial er fokuseret på nogle af API'erne, vi kan bruge til at gøre dette simpelthen i Java.

2. String.split ()

Lad os starte med kernebiblioteket - Snor klassen selv tilbyder en dele() metode - hvilket er meget praktisk og tilstrækkeligt til de fleste scenarier. Det splitter simpelthen det givne Snor baseret på skillelinjen, returnerer en matrix af Strenge.

Lad os se på nogle eksempler. Vi starter med at opdele med et komma:

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

Lad os opdele med et mellemrum:

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

Lad os også dele med en prik:

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

Lad os nu opdele med flere tegn - et komma, mellemrum og bindestreg gennem regex:

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

3. StringUtils.split ()

Apache's fælles langpakke giver en StringUtils klasse - som indeholder en null-safe dele() metode, der opdeles ved hjælp af mellemrum som standardafgrænser:

Streng [] splittet = StringUtils.split ("bil-jeepscooter");

Desuden ignorerer den ekstra mellemrum:

Streng [] splittet = StringUtils.split ("bil-jeepscooter");

4. Splitter.split ()

Endelig er der en dejlig Splitter flydende API også i Guava:

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

5. Opdel og trim

Nogle gange en given Snor indeholder nogle ledende, bageste eller ekstra mellemrum omkring afgrænseren. Lad os se, hvordan vi kan håndtere opdeling af input og beskæring af resultaterne på én gang.

Lad os sige, at vi har dette som input:

String input = "bil, jeep, scooter";

For at fjerne ekstra mellemrum før og / eller efter afgrænsningen kan vi udføre split og trim ved hjælp af regex:

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

Her, trimme() metode fjerner ledende og efterfølgende mellemrum i inputstrengen, og selve regex håndterer de ekstra mellemrum omkring afgrænseren.

Vi kan opnå det samme resultat ved hjælp af Java 8 Strøm funktioner:

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

6. Konklusion

String.split () er generelt nok. For mere komplekse tilfælde kan vi dog bruge Apache's commons-lang-baserede StringUtils klasse eller de rene og fleksible Guava API'er.

Og som altid er koden til artiklen tilgængelig på GitHub.