相关疑难解决方法(0)

为什么在Java 8 split中有时会在结果数组的开头删除空字符串?

在Java 8之前我们拆分空字符串之类的

String[] tokens = "abc".split("");
Run Code Online (Sandbox Code Playgroud)

分裂机制会在标有的地方分开 |

|a|b|c|
Run Code Online (Sandbox Code Playgroud)

因为""每个字符前后都有空格.因此,它最初将生成此数组

["", "a", "b", "c", ""]
Run Code Online (Sandbox Code Playgroud)

然后将删除尾随的空字符串(因为我们没有明确地为limit参数提供负值),所以它最终会返回

["", "a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)

在Java 8中,拆分机制似乎已经发生了变化.现在我们用的时候

"abc".split("")
Run Code Online (Sandbox Code Playgroud)

我们将得到["a", "b", "c"]数组,而不是["", "a", "b", "c"]看起来像开始时的空字符串也被删除.但是这个理论失败了,例如

"abc".split("a")
Run Code Online (Sandbox Code Playgroud)

在start时返回带有空字符串的数组["", "bc"].

有人可以解释这里发生了什么,以及这些案例的拆分规则在Java 8中是如何变化的?

java regex split java-8

107
推荐指数
3
解决办法
3万
查看次数

String.split什么时候返回一个空数组?

我的日志显示此异常:ArrayIndexOutOfBoundsException: length=0; index=0由以下代码触发:

public static String getInitialsFromFullName(String fullName)
{
    String[] splitNames = fullName.split(" ");
    String firstName = splitNames[0]; <-- Here
    ...
}
Run Code Online (Sandbox Code Playgroud)

我试图弄清楚String.split返回一个空数组的条件.我的理解是,如果找不到匹配项,则返回大小为1且包含原始字符串的数组.

这是针对Android构建SDK版本21编译的Java.我期待听到我遗漏的明显细节.

java android

12
推荐指数
1
解决办法
6616
查看次数

当提供正则表达式时,Java中的String.split()方法究竟是如何工作的?

我正在准备OCPJP考试,我遇到了以下示例:

class Test {
   public static void main(String args[]) {
      String test = "I am preparing for OCPJP";
      String[] tokens = test.split("\\S");
      System.out.println(tokens.length);
   }
}
Run Code Online (Sandbox Code Playgroud)

这段代码打印16.我期待像no_of_characters + 1这样的东西.有人可以解释一下,split()方法在这种情况下实际上做了什么?我只是不明白......

java regex split ocpjp

7
推荐指数
1
解决办法
1万
查看次数

使用具有多个分隔符的拆分感到困惑

我正在练习阅读输入,然后将其标记化.例如,如果我有[882,337]我想得到数字882和337.我尝试使用以下代码:

    String test = "[882,337]";
    String[] tokens = test.split("\\[|\\]|,");
    System.out.println(tokens[0]);
    System.out.println(tokens[1]);
    System.out.println(tokens[2]);
Run Code Online (Sandbox Code Playgroud)

它有点工作,输出是:(空白行)882 337

我不明白为什么token [0]为空?我希望只有两个令牌,其中令牌[0] = 882,令牌[1] = 337.

我检查了一些链接,但没有找到答案.

谢谢您的帮助!

java split

0
推荐指数
1
解决办法
333
查看次数

标签 统计

java ×4

split ×3

regex ×2

android ×1

java-8 ×1

ocpjp ×1