番石榴分离器具有多个分割参数

Nei*_*ker 6 java split guava

使用Guava我可以将分割设置为单个字符,字符串或正则表达式.

我想要的是分割多个输入,而不必使用正则表达式,因为我想使用方法调用建立分隔符.

我要做的是让它让我做一些像:

Splitter.on(',')
    .on('.')
    .on('|')
    .on("BREAK")
    .splitToList(test);
Run Code Online (Sandbox Code Playgroud)

因此,对于输入"a,b,cd | e BREAK f"将产生包含/ b/c/d/e/f的列表.

这是在我写的一个类中完成的,所以当调用最终处理数据并使用它作为唯一的.on()调用时,可能从输入构造一个正则表达式?

谢谢.

Ray*_*Ray 7

正如@Louis Wasserman指出的那样,你想在这里使用正则表达式.您可以使用Splitter.on(Pattern)Splitter.onPattern(String)完成此操作,并构造一个正则表达式来匹配分隔符,例如([,.|]|BREAK).

这是我的测试方法.此测试对于该CharMatcher方法失败,并且使用正则表达式成功.

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"));
    }
}
Run Code Online (Sandbox Code Playgroud)