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“
-你也不想这样,是吗?