1

我的方法有问题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"and r1[1]="34.40",这是正确的结果。但在第二种情况下,我r2[0]=""得到r2[1]="19/2009"r2[2]="34.40"。这是错误的,第二个字符串的结果应该与第一个字符串相同,没有空字符串。我需要为此改变什么?

4

3 回答 3

2

由于您,作为正则表达式给出,因此将您的字符串分成两部分,,因此您的字符串,19/2009 分为两部分。第一部分在之前,,不是这样"",第二部分,也就是19/2009,在r2[1],第三部分,被另一个分开,,在r2[2]=34.40。一切正常。

于 2012-05-23T18:18:34.400 回答
1

使用Apache Commons 的 StringUtils ...

String r2[] = StringUtils.strip(s2, ", ").split(regex);
于 2012-05-23T19:04:58.487 回答
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一个比数组更好的输出。

于 2012-05-23T19:05:00.097 回答