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

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

齐弘业
2023-03-14

我想拆分",,"到一个数组4"使用String.split()

这是我的代码:

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

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

我已经测试过稍微更改一下str:

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

这次的结果标记是<代码>[“”、“”、“”、“”、“”1“]。这接近我想要的,但我真的不想在进行拆分之前添加这个“1”。

问题基本上是字符串。如果split()只包含空元素,它将返回空数组。

你能帮我解决这个问题吗?

共有1个答案

阙佐
2023-03-14

您需要使用重载的字符串#split(regex,limit)方法,该方法接受limit参数。

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

来自文档(强调我的):

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

说明:如果不提供limit参数或提供“零”作为限制,则拆分()将丢弃尾随的空字段。当您提供一个正限制参数时,它会将字段数限制到该特定限制。但是,当您提供负限制时,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

注意:如果您不提供任何限制参数,不带限制参数的拆分()方法会像这样调用重载的拆分()方法。

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

并且还要注意,String#拆分(regex,限制)内部调用Pattern#拆分(regex,限制)

 类似资料:
  • 问题内容: 欲分割为4的阵列,以利用 这是我的代码: 但是,结果标记是一个空数组:[],而不是 我想要的4数组。 我已经测试过更改一点: 这次的结果标记为。这与我想要的接近,但是我真的不想在拆分之前添加此“ 1”。 问题基本上是,如果它仅包含空元素,它将返回一个空数组。 您能帮助解决问题吗? 问题答案: 您需要使用带有limit参数的重载方法。 从文档(重点是我的): limit参数控制应用图案的

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

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

  • 我有一个字符串变量,它包括我试图排序的网格的列名。。 我希望将其拆分为一个包含4个值的字符串数组。我尝试了以下代码行: 然而,当我运行这个程序时,逗号仍然停留在该值上,因此我有例如和。如果没有逗号,如何拆分这些值?

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

  • 问题内容: 我正在尝试找到一种将String拆分为String数组的方法,并且每当遇到白色香料时就需要对其进行拆分,例如 “嗨,我是保罗” 进入” “嗨”“我”“保罗” 如何使用RegularExpression在split()方法中表示空格? 问题答案: 您需要一个正则表达式,例如,这意味着: 每当遇到至少一个空格时就进行拆分 。完整的Java代码是: