当前位置: 首页 > 面试题库 >

如何将逗号分隔的字符串拆分为空字符串数组

胡承载
2023-03-14
问题内容

欲分割",,,"为4的阵列,以""利用String.split()

这是我的代码:

String str = ",,,";     
String[] tokens = str.split(",");

但是,结果标记是一个空数组:[],而不是"" (["","","",""])我想要的4数组。

我已经测试过更改str一点:

String str = ",,,1";        
String[] tokens = str.split(",");

这次的结果标记为["","","","1"]。这与我想要的接近,但是我真的不想在拆分之前添加此“ 1”。

问题基本上是,String.split()如果它仅包含空元素,它将返回一个空数组""

您能帮助解决问题吗?


问题答案:

您需要使用带有String#split(regex, limit)limit参数的重载方法。

String[] tokens = str.split(",", -1);

从文档(重点是我的):

limit参数控制应用图案的次数,因此会影响所得数组的长度。如果限制n大于零,则将最多应用n-1次该模式,该数组的长度将不大于n,并且该数组的最后一个条目将包含除最后一个匹配的定界符之外的所有输入。
如果n为非正数,则将尽可能多地应用该模式,并且数组可以具有任何长度。
如果n为零,则该模式将被尽可能多地应用,该数组可以具有任何长度,并且尾随的空字符串将被丢弃。

说明:
如果不提供limit参数或不提供“零”作为限制,则split()丢弃尾随的空白字段。当您提供正极限参数时,它将字段数限制为该特定极限。但是,当您提供负数限制时,该split()方法将允许任意数量的字段,并且也不会丢弃尾随的空字段。更清楚地说,请看一下Pattern#split(regex, limit)最后带有此代码段的的源代码(评论已由我添加,在实际的源代码中不存在)。

if (limit == 0) // When zero or no arg is given
    while (resultSize > 0 && matchList.get(resultSize-1).equals("")) // if trailing entries are blank
        resultSize--; // remove them out

注意:
如果不提供任何limit参数,则split()没有limit参数的split()方法将像这样调用重载方法。

public String[] split(String regex) {
    return split(regex, 0);
}

还要注意,String#split(regex, limit)内部调用Pattern#split(regex, limit)



 类似资料:
  • 我想拆分到一个数组4使用 这是我的代码: 但是,结果标记是一个空数组:[],而不是我想要的4的数组。 我已经测试过稍微更改一下str: 这次的结果标记是<代码>[“”、“”、“”、“”、“”1“]。这接近我想要的,但我真的不想在进行拆分之前添加这个“1”。 问题基本上是字符串。如果split()只包含空元素,它将返回空数组。 你能帮我解决这个问题吗?

  • 在逗号处划分字符串的最佳方法是什么,这样每个单词都可以成为ArrayList的一个元素? 例如:

  • 问题内容: 当我有1、2、3等字符串列表时,我想将此列用作一列 是否可以通过sql查询? 例如) <-我知道这不起作用。 问题答案: 使用任意数字的子查询来分割您的字符串。您可以使用‘1,2,3’代替vals。 看到它正常工作

  • 问题内容: 我需要在逗号处将字符串输入拆分为一个数组。 我该如何做到这一点? 输入: 问题答案: 尝试: 输出:

  • 问题内容: 我需要在数据库中填充纬度和经度列,但是原始信息存储为单个字符串 例如。 我猜想TRIM命令在这里很有用,但是我不知道如何告诉它每半个部分都精确地停在逗号上。 我希望能够提出一个简单的UPDATE查询,如下所示: 但是显然在LTRIM和RTRIM部分中需要做一些额外的工作,因此我只选择数据,但不包括UDFChar1中的逗号。 关于如何实现这一目标的任何想法? 问题答案: 请试试: 和 样

  • 问题内容: 我有一个字符串,我正在尝试将其解析为一个数字。我尝试使用,结果为2。我猜逗号是问题所在,但我将如何以正确的方式解决此问题?只需删除逗号? 问题答案: 是的,删除逗号: