Splits een string in Java

1. Inleiding

Splitsen Snaren is een zeer frequente operatie; deze korte tutorial is gericht op een deel van de API die we kunnen gebruiken om dit eenvoudig in Java te doen.

2. String.split ()

Laten we beginnen met de kernbibliotheek - het Draad klasse zelf biedt een splitsen () methode - wat erg handig en voldoende is voor de meeste scenario's. Het splitst gewoon het gegeven Draad gebaseerd op het scheidingsteken, waardoor een array van Snaren.

Laten we enkele voorbeelden bekijken. We beginnen met het splitsen door een komma:

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

Laten we splitsen door een witruimte:

String [] splitted = "auto jeepscooter" .split ("");

Laten we ook splitsen door een punt:

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

Laten we nu splitsen door meerdere tekens - een komma, spatie en koppelteken tot en met regex:

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

3. StringUtils.split ()

Apache's common lang-pakket biedt een StringUtils class - die een null-safe bevat splitsen () methode, die wordt gesplitst met witruimte als het standaard scheidingsteken:

String [] splitted = StringUtils.split ("auto-jeepscooter");

Bovendien negeert het extra spaties:

String [] splitted = StringUtils.split ("auto-jeepscooter");

4. Splitter.split ()

Eindelijk is er een leuke Splitser vloeiende API ook in Guava:

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

5. Splitsen en bijsnijden

Soms een gegeven Draad bevat enkele voorloop-, volg- of extra spaties rond het scheidingsteken. Laten we eens kijken hoe we de invoer kunnen splitsen en de resultaten in één keer kunnen bijsnijden.

Laten we zeggen dat we dit als invoer hebben:

String input = "auto, jeep, scooter";

Om extra spaties voor en / of na het scheidingsteken te verwijderen, kunnen we splitsen en trimmen uitvoeren met regex:

String [] split = input.trim (). Split ("\ s *, \ s *");

Hier, bijsnijden () methode verwijdert voorloop- en volgspaties in de invoertekenreeks, en de regex zelf verwerkt de extra spaties rond het scheidingsteken.

We kunnen hetzelfde resultaat bereiken door Java 8 te gebruiken Stroom Kenmerken:

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

6. Conclusie

String.split () is over het algemeen voldoende. Voor meer complexe gevallen kunnen we echter Apache's commons-lang gebruiken StringUtils class, of de schone en flexibele Guava API's.

En, zoals altijd, is de code voor het artikel beschikbaar op GitHub.