空字符串和单个分隔符字符串上的字符串拆分行为

sna*_*ppy 8 java scala

这是这个问题的后续行动.

问题在于下面的第二行.

"".split("x");   //returns {""}   // ok
"x".split("x");  //returns {}   but shouldn't it return {""} because it's the string before "x" ?
"xa".split("x"); //returns {"", "a"}    // see?, here "" is the first string returned
"ax".split("x"); //returns {"a"}
Run Code Online (Sandbox Code Playgroud)

Kim*_*bel 7

不,因为根据相关的javadoc "尾随空字符串将被丢弃".

  • 同样,来自JavaDoc:"如果表达式与输入的任何部分都不匹配,那么结果数组只有一个元素,即这个字符串." 也许它不一致,但它按照承诺的方式工作. (3认同)

srk*_*vin 5

具体根据java.util.regex.Pattern ,其String.split(..)使用,

"".split("x");   // returns {""} - valid - when no match is found, return the original string
"x".split("x");  // returns {} - valid - trailing empty strings are removed from the resultant array {"", ""}
"xa".split("x"); // returns {"", "a"} - valid - only trailing empty strings are removed
"ax".split("x"); // returns {"a"} - valid - trailing empty strings are removed from the resultant array {"a", ""}
Run Code Online (Sandbox Code Playgroud)

  • 所以它的行为是正确的,因为它调用的方法......表现如此?我想知道当我用这样的论点关闭下一个错误报告时,我的老板会说些什么. (2认同)