java - 为什么 split 函数在 java 中表现得像这样?

标签 java

如果我这样做

    String a = ""
    String b = a.split(" ")[0];

它没有给出 ArrayIndexOutOfBoundException

但是当我这样做的时候

    String a = " "
    String b = a.split(" ")[0];

它给我 ArrayIndexOutOfBoundException

当我这样做的时候再次

    String a = " abc"
    String b = a.split(" ")[0];

它没有给我异常 为什么如此?

最佳答案

有点奇怪。

事实是,在您的第一个示例中,空字符串 ""是一个字符串,而不是 null。所以当你说:用标记“”拆分这个“”,模式不匹配,你得到的数组是原始字符串。和你做的一样

String a = "abc";
String b = a.split(" ")[0];

要拆分的模式不匹配,所以你得到一个标记,即原始字符串。

在第二种情况下你会得到一个异常,因为你的字符串的完整内容正是你传递给 split 的分隔符,所以你最终得到一个空数组。

如果您需要更多详细信息,请告诉我,但仅此而已。

关于java - 为什么 split 函数在 java 中表现得像这样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7662041/

相关文章:

java - JFrame 的 contentPane 的 LayoutManager

java - 此 actionPerformed 如何与我的按钮交互?

java.lang.IllegalStateException : Scanner engine is not started. 无法执行任务

java - 如何确定两个 double 是否几乎相等

java.util.zip.ZipException : duplicate entry with firebase

java - 包含相同初始数组的副本的对象。一个数组中的值更改会导致所有其他数组中的值更改。我怎样才能防止这种情况发生?

java - 强制导入 OSGi 包

java - Hibernate 和 JAXB 注释发生冲突

用于帧的动画 API?

java - 从包中读取文件