使用java正则表达式删除空行

时间:2011-05-12 03:46:07

标签: java regex

我有一个有趣的字符串,我想要正确分解为字符串数组。该字符串如下。

String test="?[32,120],x1y1,[object pieceP1],null]";

现在我有这个正则表达式来攻击它。

String delims = "[?,\\[\\]]";

现在使用此代码分割它的结果

String[] tokens = mapString.split(delims);

产生此结果

- >
- >
32个
120个
- >
X1Y1
- >
对象件P1 - >

箭头是空行。

如何修改此正则表达式,以便没有空行?

提前谢谢你。

~Selcuk

3 个答案:

答案 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'