Java Top

I just announced the new Learn Spring course, focused on the fundamentals of Spring 5 and Spring Boot 2:


1. Introduction

Splitting Strings is a very frequent operation; this quick tutorial is focused on some of the API we can use to do this simply in Java.

2. String.split()

Let's start with the core library – the String class itself offers a split() method – which is very convenient and sufficient for most scenarios. It simply splits the given String based on the delimiter, returning an array of Strings.

Let us look at some examples. We'll start with splitting by a comma:

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

Let's split by a whitespace:

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

Let's also split by a dot:

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

Let's now split by multiple characters – a comma, space, and hyphen through regex:

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

3. StringUtils.split()

Apache's common lang package provides a StringUtils class – which contains a null-safe split() method, that splits using whitespace as the default delimiter:

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

Furthermore, it ignores extra spaces:

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

4. Splitter.split()

Finally, there's a nice Splitter fluent API in Guava as well:

List<String> resultList = Splitter.on(',')
  .splitToList("car,jeep,, scooter");

5. Split and Trim

Sometimes a given String contains some leading, trailing, or extra spaces around the delimiter. Let's see how we can handle splitting the input and trimming the results in one go.

Let's say we have this as an input:

String input = " car , jeep, scooter ";

To remove extra spaces before and/or after the delimiter, we can perform split and trim using regex:

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

Here, trim() method removes leading and trailing spaces in the input string, and the regex itself handles the extra spaces around delimiter.

We can achieve the same result by using Java 8 Stream features:

String[] splitted =","))

6. Conclusion

String.split() is generally enough. However, for more complex cases we can utilize Apache's commons-lang based StringUtils class, or the clean and flexible Guava APIs.

And, as always, the code for the article is available over on GitHub.

Java bottom

I just announced the new Learn Spring course, focused on the fundamentals of Spring 5 and Spring Boot 2:

Inline Feedbacks
View all comments
Slava Semushin
Slava Semushin
3 years ago

It’s a bit odd to create a list only to be able to convert it to array later (Arrays.asList(“car”, “jeep”, “scooter”).toArray()). Why not just create an array (new String[]{“car”, “jeep”, “scooter”})?

Grzegorz Piwowarek
Grzegorz Piwowarek
3 years ago
Reply to  Slava Semushin

Actually, It would make even more sense to use Assertj. We will update it.

Actually, we ended up removing the assertions from the article but still introduced Assertj to the codebase

Comments are closed on this article!