Guava Splitter with multiple split parameters
guava, java, split
Solution
As @Louis Wasserman pointed out, you want to use a regular expression here. You can either use `Splitter.on(Pattern)` or `Splitter.onPattern(String)` to accomplish this, and construct a regular expression to match the separators, like `([,.|]|BREAK)`.
Here is my method with a test. This test fails for the `CharMatcher` approach, and succeeds with the regular expression.
public class SplitterTest {
public String splitAndRejoin(String pre) {
return Joiner.on("/").join(
Splitter
.onPattern("([,.|]|BREAK)")
.trimResults()
.omitEmptyStrings()
.split(pre));
}
@Test
public void test1() {
assertEquals("a/b/c/d/e/f", splitAndRejoin("a,b,c.d|e BREAK f"));
assertEquals("A/B/C/D/E/F", splitAndRejoin("A,B,C.D|E BREAK F"));
}
}
Problem
Playing with Guava I can either set the split to be a single character, a string or a regular expression. What I want is to split on multiple inputs without having to resort to using regular expressions as I want to built up the separators using method calls. What I'm trying to do is to get it to let me do something like: ``` Splitter.on(',') .on('.') .on('|') .on("BREAK") .splitToList(test); ``` So for the input "a,b,c.d|e BREAK f" would produce a list containing a/b/c/d/e/f. This is done within a class I'm writing so maybe construct a regular expression from the inputs when the call is made to finally process the data and use this as the one and only .on() call? Thanks.