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 如何在String.split()中允许空字符串?_Java_String_Split - Fatal编程技术网

Java 如何在String.split()中允许空字符串?

Java 如何在String.split()中允许空字符串?,java,string,split,Java,String,Split,我正在使用拆分字符串。我收到的字符串具有以下结构: [data]<US>[data]<US> 除非[DATA]是一个空字符串,否则它可以正常工作。在这种情况下,数据被跳过 我希望像[DATA][DATA]这样的字符串返回一个包含三个元素的数组:[DATA]、null和[DATA] 我该怎么做呢?如果您使用-1作为第二个参数对拆分进行参数化,您将得到一个空字符串,其中[data]缺失(但不是null) 解释来自 如果n为非正,则图案将被应用尽可能多的次数,并且阵列可以具有

我正在使用拆分字符串。我收到的字符串具有以下结构:

[data]<US>[data]<US>
除非
[DATA]
是一个空字符串,否则它可以正常工作。在这种情况下,数据被跳过

我希望像
[DATA][DATA]
这样的字符串返回一个包含三个元素的数组:
[DATA]
null
[DATA]


我该怎么做呢?

如果您使用
-1
作为第二个参数对
拆分
进行参数化,您将得到一个空
字符串,其中
[data]
缺失(但不是
null

解释来自

如果n为非正,则图案将被应用尽可能多的次数,并且阵列可以具有任意长度

。。其中n是极限,即第二个参数

这是一个工作代码

String s="[DATA]<US><US>[DATA]<US>";
String arr []= s.split("<US>");
for(String str :arr) {
    if(str.equals("")) {
        System.out.println("null");
    } else {
        System.out.println(str);
    }       
}
要根据您的要求更加具体:

public String [] format(String s) {     
        String arr []= s.split("<US>");     
        for(int i=0;i<arr.length;i++)
        {
            if(arr[i].equals(""))
            {
                arr[i]=null;
            }           
        }
        return arr;
    }
公共字符串[]格式(字符串s){
字符串arr[]=s.split(“”);

对于(int i=0;i,您可以简单地在数组中循环,然后将空字符串指定为null:

public class StringSplitting {

    public static void main(String[] args){

        String inputs = "[data]<US><US>[data]<US>";

        String[] fields = inputs.split("<US>");


        //set empty values to null
        for(int i = 0; i < fields.length; i++){
            if(fields[i].length() == 0){
                fields[i] = null;
            }
        }

        //print output
        for(String e: fields){
            if(e == null){
                System.out.println("null");
            }else{
                System.out.println(e);
            }
        }
    }
}
公共类字符串拆分{
公共静态void main(字符串[]args){
字符串输入=“[data][data]”;
字符串[]字段=输入。拆分(“”);
//将空值设置为null
for(int i=0;i
我的观点是,这实际上不起作用。如果没有提供限制,则不会有空字符串。@BartFriederichs Please elborate。你所说的没有限制是什么意思?请参阅公认的答案。
[DATA]
null
[DATA]
public String [] format(String s) {     
        String arr []= s.split("<US>");     
        for(int i=0;i<arr.length;i++)
        {
            if(arr[i].equals(""))
            {
                arr[i]=null;
            }           
        }
        return arr;
    }
public class StringSplitting {

    public static void main(String[] args){

        String inputs = "[data]<US><US>[data]<US>";

        String[] fields = inputs.split("<US>");


        //set empty values to null
        for(int i = 0; i < fields.length; i++){
            if(fields[i].length() == 0){
                fields[i] = null;
            }
        }

        //print output
        for(String e: fields){
            if(e == null){
                System.out.println("null");
            }else{
                System.out.println(e);
            }
        }
    }
}