拆分,不起作用的第一个字符

时间:2012-05-23 18:13:53

标签: java regex split

我的方法split有问题。 我有这个正则表达式:

String regex = "[\s|\,]+";

我有这两个字符串:

String s1 = "19/2009 , 34.40";

String s2 = ",19/2009 , 34.40";   // this is the same string wiht "," in the start

我将正则表达式应用于两个字符串:

String r1[] = s1.split(regex);  
String r2[] = s2.split(regex);

在第一种情况下,我得到r1[0]="19/2009"r1[1]="34.40",这是正确的结果。但在第二种情况下,我得到r2[0]=""r2[1]="19/2009"r2[2]="34.40"。这是错误的,它应该与第一个字符串的结果相同,而不是空字符串。我需要改变什么呢?

3 个答案:

答案 0 :(得分:2)

由于您将,作为正则表达式,,将您的字符串拆分为两个,因此您的字符串,19/2009会分为两部分。第一部分在,之前,而""则不是19/2009,第二部分是r2[1],在,中,第三部分由另一部分r2[2]=34.40隔开1}},位于{{1}}。一切正常。

答案 1 :(得分:1)

使用Apache Commons' StringUtils ...

String r2[] = StringUtils.strip(s2, ", ").split(regex);

答案 2 :(得分:0)

我会保留正则表达式并执行此操作

List<String> list = new ArrayList<String>(Arrays.asList(splitArray));
for (Iterator<String> iterator = list.iterator(); iterator.hasNext();) {
    if (iterator.next().isEmpty()) { // remove empty indexes
        iterator.remove();
    }
}

它有点长,但它给你一个List作为输出,它比数组好得多。