使用分割方法分割字符串

时间:2019-10-12 13:59:19

标签: java string split

我曾尝试使用split方法拆分字符串,但是在使用split方法时遇到了一些问题。

String str="1-DRYBEANS,2-PLAINRICE,3-COLDCEREAL,4-HOTCEREAL,51-ASSORTEDETHNIC,GOURMET&SPECIALTY";

List<String> zoneArray = new ArrayList<>(Arrays.asList(zoneDescTemp.split(",")));

实际输出:

zoneArray = {"1-DRYBEANS","2-PLAINRICE","3-COLDCEREAL","4-HOTCEREAL","51-ASSORTEDETHNIC","GOURMET&SPECIALTY"}

预期输出:

zoneArray = {"1-DRYBEANS","2-PLAINRICE","3-COLDCEREAL","4-HOTCEREAL","51-ASSORTEDETHNIC,GOURMET&SPECIALTY"}

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

使用split(",(?=[0-9])")

您不仅要用逗号分隔,而且仅当逗号后跟0-9的数字时才用逗号分隔。这也称为正向超前(?=)

以下面的代码片段为例:

public static void main(String[] args) {
        String str="1-DRYBEANS,2-PLAINRICE,3-COLDCEREAL,4-HOTCEREAL,51-ASSORTEDETHNIC,GOURMET&SPECIALTY";

        String[] array1= str.split(",(?=[0-9])");
        for (String temp: array1){
            System.out.println(temp);
        }
    }
}

答案 1 :(得分:3)

在正则表达式中使用先行查找,先使用逗号(不使用先行),然后使用数字(先行)。 \\d+就足够了。正则表达式如下所示:

String regex = ",(?=\\d+)";

例如:

public class Foo {
    public static void main(String[] args) {
        String str = "1-DRYBEANS,2-PLAINRICE,3-COLDCEREAL,4-HOTCEREAL,51-ASSORTEDETHNIC,GOURMET&SPECIALTY";
        String regex = ",(?=\\d+)";
        String[] tokens = str.split(regex);
        for (String item : tokens) {
            System.out.println(item);
        }
    }
}

这样做是在逗号后加数字,但不会从输出中删除数字,因为数字是预读的一部分。

有关前瞻性,后视性和环顾四周的更多信息,请查看this relevant tutorial page