Java 拆分,不';不工作的第一个字符

Java 拆分,不';不工作的第一个字符,java,regex,split,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); 我将正则表达式应用

我对方法
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);
我将正则表达式应用于两个字符串:

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”
。这是错误的,第二个字符串的结果应该与第一个相同,没有空字符串。我需要做什么更改呢?

既然您将
作为正则表达式,
将字符串一分为二,那么您的字符串
,19/2009
将分为两部分。第一部分在
之前,与
完全不同,第二部分是
19/2009
,位于
r2[1]
中,第三部分由另一个
分隔,位于
r2[2]=34.40
中。一切正常。

使用


我会让正则表达式保持原样,这样做

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 List=newarraylist(Arrays.asList(splitArray));
for(Iterator Iterator=list.Iterator();Iterator.hasNext();){
if(iterator.next().isEmpty()){//删除空索引
iterator.remove();
}
}

它稍微长一点,但它提供了一个
列表
,作为输出,比数组好得多。

这是什么语言?C#?Java?你能预处理输入字符串吗?你不能删除那些空字符串吗?你的正则表达式很奇怪,这很容易理解。首先,您需要将Java字符串中的反斜杠加倍。那么,您真的想在拆分字符列表中包含一个文本
|
?你知道,这并不意味着角色类中的“或”。此外,无需转义逗号。您可能需要
String regex=“[\\s,]+”
。是的,regex生成的正是您所描述的,但这不是海报所要求的。海报不希望数组包含空字符串。好的,但是我可以为拆分生成正则表达式吗?不给我这个空字符串吗?可以,但是
r1[0]
会变成
”,19/2009“
-你也不想这样,是吗?