当前位置: 首页 > 知识库问答 >
问题:

如何在字符串中允许空字符串。拆分()?[副本]

云镜
2023-03-14

我正在使用String.split()拆分一个字符串。我收到的字符串有这样的结构:

[data]<US>[data]<US>

其中<代码>

String[] fields = someString.split(String.valueOf(0x1f));

除非是空字符串,否则这可以正常工作。在这种情况下,只会跳过数据。

我想要一个字符串,如<代码>[数据]

我该怎么做?

共有3个答案

陈功
2023-03-14

这是一个工作代码

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

输出::

[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;
    }
胡俊贤
2023-03-14

您只需在数组中循环,然后将空字符串指定为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);
            }
        }
    }
}
柯瀚玥
2023-03-14

如果使用-1作为第二个参数对拆分进行参数化,则会得到一个空的字符串,其中缺少[数据](但不为空)。

someString.split(String.valueOf(0x1f), -1);

来自文档的解释

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

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

 类似资料:
  • 我正在编写一个应用程序,它从Timezonedb API中提取数据,以获得可用时区列表: https://timezonedb.com/references/list-time-zone TableViewController: 感谢任何帮助。谢谢你。

  • 问题内容: 因此,stdin将一串文本返回到列表中,并且多行文本都是列表元素。您如何将它们全部分割成一个单词? 想要的输出: 问题答案: 您可以使用简单的列表推导,例如: 这将产生:

  • 问题内容: 将字符串拆分为流的 最佳 方法是什么? 我看到了这些变化: 我的优先事项是: 坚固性 可读性 性能 一个完整的可编译示例: 问题答案: / 由于返回数组,因此我始终建议您使用流式处理数组的规范用法。 / 是一个 varargs 方法,它恰好接受一个数组,这是由于varargs方法是通过数组实现的,并且在将varargs引入Java以及改型为接受可变参数的现有方法时,存在兼容性方面的问题

  • 我目前正在尝试将字符串拼接成多行字符串。正则表达式应选择前面有 13 个字符的空格。 问题在于,13个字符的计数在前一个选定的空白之后不会重置。因此,在前13个字符之后,正则表达式选择每个空白。 我使用以下正则表达式,其 13 个字符: (结尾有一个空格) 您可以在这里测试正则表达式和以下代码: 此代码的输出如下所示: 这是个测试。 应用 应在 13 个字符后的空格上以子字符串分隔此字符串 但应该

  • 我有一个字符串,,我想把它分成两个字符串: 这意味着第一个字符串将包含之前的字符,第二个字符串将包含之后的字符。我还想检查字符串中是否有。如果没有,我会抛出一个异常。我该如何做到这一点?

  • 问题 你想拆分一个字符串。 解决方案 使用 JavaScript 字符串的 split() 方法: "foo bar baz".split " " # => [ 'foo', 'bar', 'baz' ] 讨论 String 的这个 split() 方法是标准的 JavaScript 方法。可以用来基于任何分隔符——包括正则表达式来拆分字符串。这个方法还可以接受第二个参数,用于指定返回的子字符串数