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

+3

这是什么语言? C#? Java的? – Richard

+0

你可以预处理输入字符串吗? –

+0

语言是Java – Ina

回答

2

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

+0

是的,正则表达式恰好产生你描述的内容,但这不是海报所要求的。海报不希望数组包含空字符串。 –

+0

好吧,但我可以建立正则表达式的分裂不要给我这个空字符串? – Ina

+0

你可以,但是然后'r1 [0]'会变成'',2009年19月'' - 你也不想那么做吗? –

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作为输出,该输出好得多的数组。