java - foo.split (',' ).length != 在 ',' 中找到的 'foo' 的数量?

标签 java string csv

也许是因为周五已经结束了,我已经找到了解决方法,但这快要了我的命。

我使用 Java,但我是 .NET 开发人员。

我有一个字符串,我需要用分号逗号分隔它。假设 CSV 文件中的一行有 200 210 列。 line.split(',').length 有时会是 199,其中 ',' 的计数将是 208 或 209。我以 2 种不同的方式找到计数,甚至可以确定(使用正则表达式,然后手动循环并检查失去理智后的角色)。

我在这里缺少的 super 明显的击脸桌面的东西是什么?为什么 foo.split(delim).length == CountOfOccurences(foo,delim) 不是一直存在,而是有时存在?

非常感谢

最佳答案

首先,有一个明显的区别。如果有 200 列,全部带有文本,则有 199 个逗号。其次,Java 默认情况下会删除尾随的空字符串。您可以通过传递负数作为第二个参数来更改此设置。

"foo,,bar,baz,,".split(",")

是:

{foo,,bar,baz}

4 个元素的数组。但是

"foo,,bar,baz,,".split(",", -1)

是::

{foo,,bar,baz,,}

全部 6 个。

请注意,默认情况下仅删除尾随的空字符串。

最后,不要忘记字符串被编译成正则表达式。这在这里不适用,因为 , 不是特殊字符,但您应该记住它。

关于java - foo.split (',' ).length != 在 ',' 中找到的 'foo' 的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791204/

相关文章:

java - 使用 Maven Shade 插件的父子 Pom 布局

java - 致命异常 : Main java. lang.RuntimeException:

java - 房间 - 错误无法比较的类型 : int and <null>

Java,如何有效地对大型输入流进行分块?

java - 如何在 Java 中使用 String 或 StringBuilder 倒序搜索?

c - 如何将 unsigned char 数组转换为 base64 字符串?

regex - 检查字符串是否有非法字符

csv - 来自 FSharp.Data 的 CSV typeprovider 的性能问题

python - Python按列合并不同大小的表

bash - 使用 sed 删除每个 csv 文件的第一行