我有一个有趣的字符串,我想要正确分解为字符串数组。该字符串如下。
String test="?[32,120],x1y1,[object pieceP1],null]";
现在我有这个正则表达式来攻击它。
String delims = "[?,\\[\\]]";
现在使用此代码分割它的结果
String[] tokens = mapString.split(delims);
产生此结果
- >
- >
32个
120个
- >
X1Y1
- >
对象件P1
- >
空
箭头是空行。
如何修改此正则表达式,以便没有空行?
提前谢谢你。
~Selcuk
答案 0 :(得分:2)
您可以使用Google Guava的Splitter
课程来实现这一目标:http://guava-libraries.googlecode.com/svn/tags/release09/javadoc/com/google/common/base/Splitter.html
Splitter.omitEmptyStrings()
应该做的工作。
答案 1 :(得分:2)
String delims = "[?,\\[\\]]+";
// [] +
see the Greedy quantifiers part in Summary of regular-expression constructs of Pattern
但是领先的空元素仍在那里。
答案 2 :(得分:1)
试试这个
public class Regex
{
public static void main(String[] args)
{
String []split = "?[32,120],x1y1,[object pieceP1],null]".split("([?,\\[\\]])+");
for (int i = 0; i < split.length; i++) {
System.out.println("'"+split[i]+"'");
}
}
}
如果测试字符串以分隔符开头,则数组的索引0将始终为空字符串。您可以像if(split[0].length == 0) continue;
<强> >>Output
强>
''
'32'
'120'
'x1y1'
'object pieceP1'
'null'