Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Split方法拆分字符串_Java_String_Split - Fatal编程技术网

Java 使用Split方法拆分字符串

Java 使用Split方法拆分字符串,java,string,split,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(","))); 预期产出: zoneArr

我曾尝试使用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"}
任何帮助都将不胜感激。

使用
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);
        }
    }
}
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);
        }
    }
}

在您的正则表达式中使用一个lookahead,它使用逗号(不在lookahead中),后跟一个数字(在lookhead中)<代码>\\d+就足够了。正则表达式可以如下所示:

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

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);
        }
    }
}
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);
        }
    }
}
它所做的是用逗号分割,逗号后面跟数字,但不会从输出中删除数字,因为数字是前瞻的一部分


有关“向前看”、“向后看”和“环顾四周”的详细信息,请查看。

您需要使用一个包含向前看的正则表达式,一个查找逗号(不在向前看中)后跟数字(在向前看中)的正则表达式是的,完全正确。1+