我的方法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"
。这是错误的,它应该与第一个字符串的结果相同,而不是空字符串。我需要改变什么呢?
答案 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
作为输出,它比数组好得多。