String 类 split 函数返回不明确的结果

2024-03-13

下面是2个代码

System.out.println(",,,,,".split(",").length);

and

System.out.println(",,,,, ".split(",").length);

对于第一个代码,它打印的结果是0对于第二个代码,它打印的结果是 6。

我的问题是为什么分裂无法识别","当我没有在末尾添加额外的空间但当我在末尾添加额外的空间时它能够识别它。

请注意我已经尝试过使用正则表达式“\\s*,\\s”但结果是一样的。


我没有这方面的文档参考,但根据我在测试中看到的经验String#split的问题是,如果没有实际的文本匹配,则数组中也不会返回零宽度匹配。因此以下返回一个空数组:

",,,,,".split(",")

但是,如果您在一系列逗号的末尾添加一个空格,然后执行相同的拆分,则将有一个匹配的空格。因此,数组返回所有匹配项,包括零宽度匹配项:

",,,,, ".split(",")

但是,因为逗号之间没有内容,所以我将您的真正要求解释为想要将每个单独的逗号分割成一个单独的结果。如果是这样,那么您可以使用环视进行拆分,如下所示:

String input = ",,,,,";
String[] parts = input.split("(?<=,)(?=,)");
for (String part : parts) {
    System.out.println(part);
}

这输出:

,
,
,
,
,

Demo http://rextester.com/JAXJM36042

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

String 类 split 函数返回不明确的结果 的相关文章

随机推荐

  • Xcode 4“等待进程‘Appname’启动

    我安装了 Xcode 4 但现在无法运行我的 iPhone 项目之一 Copyright 2004 Free Software Foundation Inc GDB is free software covered by the GNU G
  • 为什么java中BitSet的内部数据存储为long[]而不是int[]?

    在java中 内部数据BitSet https docs oracle com javase 8 docs api java util BitSet html存储为long 而不是int 我想知道为什么 jdk中的代码如下 The inte
  • 如何在 Firefox 中动态调整 iFrame 大小?

    我使用本页所述的解决方案根据内容调整 iFrame 的大小 根据内容调整 iframe 的大小 https stackoverflow com questions 153152 resizing an iframe based on con
  • 使用不同版本的 Android 支持库的解决方法

    这是参考 build gradle 文件中出现的警告消息 所有 com android support 库必须使用完全相同的版本 规范 混合版本可能会导致运行时崩溃 我很清楚这一点 并在我自己的代码 构建中使用相同的版本 然而 当涉及到某些
  • 更改 bash 中的单词分隔符

    我想更改 bash 或 readline 用于分隔单词的分隔符 具体来说我想做 不分隔单词 这样如果我有文本 ls some file 我按Alt Backspace它删除整个some file文本 而不仅仅取决于 字符 这也会导致删除长标
  • 密码通知脚本在剩余天数内引发“类型不匹配”错误

    我可以让每个人单独工作 但我无法让他们一起工作 登录脚本使用strArg 调用HTA文件时 HTA文件会生成一个密码窗口 当登录脚本运行 HTA 文件时 第 31 行和第 106 行出现错误 我知道问题出在strArg 我想不明白 应在到期
  • 控制器映射中的 ASP.NET MVC 枚举参数

    ASP NET MVC 为控制器方法提供了简单的模板 例如Details 并且可以有类似的东西 public ActionResult Details int id do something 可以通过以下方式访问 http localhos
  • 如何向 JTable java 插入/删除列

    我不知道该怎么办 我正在创建一个应用程序 我需要使用表格 所以我使用 JTable 但我对此有很多问题 它似乎有效 但是当我尝试删除列时 该列消失了 仅在 GUI 中 但所有信息仍然存在 列数也不会改变 我搜索并尝试了很多不同的代码 但没有
  • MySQL 中的“unsigned”是什么意思以及何时使用它?

    MySQL 中的 unsigned 是什么意思 什么时候应该使用它 MySQL http dev mysql com doc refman 5 7 en numeric type attributes html says 所有整数类型都可以
  • 更改别名目标 python

    我想使用 python 更改别名的目标 我是否必须下载一些外部库才能执行此操作 我尝试了一下别名 但无法找到任何无需用户输入即可编辑它们的方法 我使用的是Mac Python 2 6 据我所知 使用 PyObjC 应该可以访问 Mac 的基
  • 上传时获取原始文件创建日期

    我们有一个将文件上传到我们网站的流程 对于用户来说 能够看到这些文件的创建时间变得很重要 我正在寻找一种从 HttpPostedFile 中提取原始创建日期的方法 如果有人对我有想法 我会非常感激 此时我有点困惑 您无权访问在客户端上创建文
  • Autoscaling 组中的 UpdatePolicy 对于 AWS CloudFormation 更新无法正常工作

    我正在使用 AWS CloudFormation 启动我的服务器堆栈 我创建了一个 LaunchConfig 然后创建了使用上述 launchconfig 的 AutoScaling 组 我已经设置了 CreationPolicy 它等待来
  • jQuery 的 .val() 在 Facebox 中不起作用

    我正在使用 Facebox http defunkt github com facebox http defunkt github com facebox 在我的网站之一上 我还在网站上广泛使用 jQuery 我的问题是 val 函数似乎无
  • 使用脚本桥创建 iTunes 播放列表

    我正在尝试使用可可脚本桥创建一个新的用户播放列表 但似乎无法让它工作 到目前为止我有 iTunesApplication iTunes SBApplication applicationWithBundleIdentifier com ap
  • 在Linux中,属于内核数据段的物理内存页是否可交换?

    我这样问是因为我记得属于内核的所有物理页面都固定在内存中 因此是不可交换的 就像这里所说的 http www cse psu edu axs53 spring01 linux memory ppt http www cse psu edu
  • 在散景刻度标签中插入换行符

    我想在 Bokeh 中创建多行格式的刻度标签 在常规 Python 中以这种方式格式化很简单 例如 n format Category Percentage 将打印 Percentage 在我的代码中 我这样做是为了创建绘图数据 ds Or
  • 如何正确停止运行 dotnet core Web 应用程序?

    In Visual Studio 2017 and 2019 on Windows I run dotnet watch run in the Package Manager Console It launched kestrel for
  • 如何在 React-Redux 中使用 Mocha、Chai 和 Enzyme 测试方法和回调

    我必须为一个编写单元测试用例PlayerList容器和Player成分 为分支和 props 编写测试用例是可以的 但是如何测试组件的方法及其内部的逻辑 我的代码覆盖率不完整 因为这些方法未经测试 设想 父组件传递对其方法的引用onSele
  • Zend_Validate_Between 奇怪的错误消息

    我正在尝试Zend Validate Between class 我是这样设置的 scoreBetweenValidator new Zend Validate Between 3 3 true 因此验证器应该只接受 3 到 3 之间的值
  • String 类 split 函数返回不明确的结果

    下面是2个代码 System out println split length and System out println split length 对于第一个代码 它打印的结果是0对于第二个代码 它打印的结果是 6 我的问题是为什么分裂