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

拆分-如何在结果中获取尾随空字符串[重复]

郑声
2023-03-14

我正在尝试使用拆分(“;”)将字符串转换为数组 。我这样做:

String str = "ggg;123;q;w;;";
String[] strArr = str.split(";");

返回数组:

["ggg","123","q","w"]

但我想得到回报:

["ggg","123","q","w","",""]

字符串可以是“ggg;123;;w;;df”或“ggg;123;;ds;”

当“;”之间没有值时,我想在数组中创建一个空元素。这可能吗?

谢谢你的帮助!

共有3个答案

仰成天
2023-03-14

如果你看看拆分(String regex)的留档,你会发现(强调我的)

此方法的工作方式类似于使用给定表达式调用双参数split方法和一个极限参数zero方法。因此,结果数组中不包括尾随的空字符串。

现在,如果您看到这个双参数split(String regex,int limit)方法文档,您会发现

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

所以,为了防止删除尾随的空字符串而不限制结果数组的长度,您需要使用非正值作为限制,而不是

split(";")

使用

split(";", -1)
阳德润
2023-03-14

Guava图书馆提供了一个更具可读性的替代方案。

默认情况下,包含空字符串。

    String str = "ggg;123;q;w;;";
    List<String> split = Splitter.on(";").splitToList( str );

可以使用可读的方法名称省略空字符串:

    String str = "ggg;123;q;w;;";
    List<String> split = Splitter.on(";").omitEmptyStrings().splitToList( str );
洪子晋
2023-03-14

像那样使用

String[] strArr = str.split(";",-1);
System.out.println(Arrays.toString(strArr));
 类似资料:
  • 我有以下字符串: 如果你只是打印这个,它会像这样输出(当然不会“逐字”打印): 调用方法split(“\n”)时,我希望获取新行(

  • 我正在使用拆分一个字符串。我收到的字符串有这样的结构: 其中<代码> 除非是空字符串,否则这可以正常工作。在这种情况下,只会跳过数据。 我想要一个字符串,如<代码>[数据] 我该怎么做?

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

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

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