Splitting strings, or building them from collections of objects, is a common task in any program. As usual, Guava has you covered with its two classes Splitter and Joiner.
Splitter
The Splitter class can split a String according to
- a character;
- a fixed string;
- a regular expression;
- a CharMatcher
or even in pieces of the same fixed length. Creating a Splitter is quite simple:
Splitter onSpace = Splitter.on(' ');
Iterable<String> parts = onSpace.split("a bc def");
Splitter otherSplitter = Splitter.on(Patter.compile("\\s+))
.trimResults()
.omitEmptyStrings();
Splitters are immutable and thread-safe, which means that they can safely be stored in a static final variable. The default behavior is to return an Iterable<String>; however a method splitToList is provided if you want to build a List<String>.
Joiner
Joiner does the opposite of Splitter: it creates a String by joining objects, using their toString method. For instance:
String s = Joiner.on(", ").join("a", "b", "c");
assertEquals("a, b, c", s);
Joiner provides a lot of useful variants its two main methods:
joincan take anIterable, an array, or anIterator;appendTocan be used to add the generated String to aStringBuilder, aWriteror otherAppendable; again, it can takeIterable,Iteratoror arrays.
Finally, there's a way (calling skipNulls) to create a Joiner which will skip null objects in its arguments, and another (using useForNull) to replace them with a default string.
Similarly to Splitter, Joiner instances are thread-safe and immutable.
