Java 的 split 方法为什么要把后面的空字符串丢弃掉?

2019-12-09 16:41:16 +08:00
 zsdroid
String a = "1,2,3,,,,,";
System.out.println(a.split(",").length);//3
4090 次点击
所在节点    Java
12 条回复
ymmud
2019-12-09 16:42:19 +08:00
split(",", -1);
xtreme1
2019-12-09 16:43:25 +08:00
lihongjie0209
2019-12-09 16:43:52 +08:00
你确定是
这个空字符串“ ”

还是这个空字符串 “”
Rwing
2019-12-09 16:49:26 +08:00
C# 欢迎您 :)
https://docs.microsoft.com/zh-cn/dotnet/api/system.string.split?view=netcore-3.0#System_String_Split_System_String___System_StringSplitOptions_

参数
separator
String[]
分隔此字符串中子字符串的字符串数组、不包含分隔符的空数组或 null。
options
StringSplitOptions
要省略返回的数组中的空数组元素,则为 RemoveEmptyEntries ;要包含返回的数组中的空数组元素,则为 None。
conn4575
2019-12-09 16:54:19 +08:00
java 的 split 和其他语言的很不一样,各种反直觉,不知道设计者怎么想的
gaius
2019-12-09 17:06:40 +08:00
用 guava 的 splitter
qwerthhusn
2019-12-09 17:11:46 +08:00
从来不用这个,而且这个方法的参数是一个正则表达式,比如"1.2.3.4".split(".")是得不到结果的,必须要 split("\\.")
都是用 Guava 的 Splitter,可以明确指定按子串分割,按字符分割或者按正则分割。而且结果的话可以选择过滤或者不过滤空串
lxk11153
2019-12-09 17:16:15 +08:00
感觉这个方法源码不难懂,看下就行了
annielong
2019-12-09 18:00:01 +08:00
感觉挺好,不用再处理空字符,感觉用 split 的场景大多数是只要非空字符的
ragnaroks
2019-12-09 23:03:58 +08:00
没有 java 的反人类如何衬托出其他语言的优雅..
watzds
2019-12-09 23:46:38 +08:00
很奇怪的设计,好像后面的会丢掉,前面的会留着

,,1,2,3,,
watzds
2019-12-09 23:47:47 +08:00
@annielong 其他位置还是会有空的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/627337

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX