我有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)";
它在白色空格上分裂但不在“(”和“)”上分开,我希望“(”和“)”成为单独的字符串。
答案 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