字符串split()在空格和“(”和“)”上

时间:2012-10-08 08:28:58

标签: java string split

我有String

String testString = "IN NEWYORK AND (OUT FLORIDA)" ; 

我想在数组中分割出这个字符串:

String testArray[] = testString.split("\\s()");

我希望结果是:

testArray[0] = "IN";
testArray[1] = "NEWYORK";
testArray[2] = "AND";
testArray[3] = "(";
testArray[4] = "OUT";
testArray[5] = "FLORIDA";
testArray[6] = ")";

然而,我得到的输出是:

testArray[0] = "IN";
testArray[1] = "NEWYORK";
testArray[2] = "AND";
testArray[3] = "(OUT";
testArray[4] = "FLORIDA)";

它在白色空格上分裂但不在“(”和“)”上分开,我希望“(”和“)”成为单独的字符串。

4 个答案:

答案 0 :(得分:3)

尝试以下方法:

String testArray[] = testString.split("\\s|(?<=\\()|(?=\\))");

答案 1 :(得分:1)

split()需要删除删除器。使用StringTokenizer并指示它保留分隔符。

    StringTokenizer st = new StringTokenizer("IN NEWYORK AND (OUT FLORIDA)", " ()", true);
    while (st.hasMoreTokens()) {
        String t = st.nextToken();
        if (!t.trim().equals("")) {
            System.out.println(t);
        }
    }

答案 2 :(得分:0)

String test = "IN NEWYORK AND (OUT FLORIDA)";
// this can for sure be done better, hope you get the idea
String a = test.replaceAll("(", "( ");
String b = a.replaceAll(")", " )";

String array[] = b.split("\\s");

答案 3 :(得分:0)

如果你想用字符串拆分来做,那么像\s+|((?<=\()|(?=\())|((?<=\))|(?=\)))这样的怪异正则表达式几乎是不可避免的。这个正则表达式基于this问题,顺便说一下,它几乎可以工作。

最简单的方法是使用@acerisara建议使用空格括起括号,或按@ user1030723

的建议使用StringTokenizer