为什么java String.split 忽略最后一个字符是基于最后一个字符拆分

Ash*_*oyi 1 java openjdk java-8

如果我运行以下代码:

"testx".split("x")
Run Code Online (Sandbox Code Playgroud)

期望我们会得到{"test", ""},但 java 正在返回{"test"}

"xtest".split("x")返回{"", "test"}。任何想法为什么它的行为很奇怪(或)我有错误的理解吗?

这是我的 JDK 和系统信息:

JRE:1.8.0_152-release-1024-b6 amd64

JVM:JetBrains sro 的 OpenJDK 64 位服务器 VM

Linux 4.4.0-34-generic

Jua*_*oza 7

String.split文档:

此方法的工作方式就像通过使用给定表达式和零限制参数调用双参数 split 方法一样。因此,结果数组中不包含尾随空字符串。

如果你想保留尾随的空字符串,那么你可以像这样使用String.split(String, int)

String str = "testx";
String[] values = str.split("x", -1);
Run Code Online (Sandbox Code Playgroud)

输出:

{"test", ""}
Run Code Online (Sandbox Code Playgroud)