Поведение разделения строк в пустой строке и в одиночной строке разделителя - PullRequest
8 голосов
/ 16 ноября 2011

Это продолжение этого вопроса .

Вопрос находится во второй строке ниже.

"".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"}

Ответы [ 3 ]

7 голосов
/ 16 ноября 2011

Нет, потому что согласно соответствующий javadoc"завершающие пустые строки будут отброшены".

5 голосов
/ 16 ноября 2011

Согласно источнику 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", ""}
0 голосов
/ 06 февраля 2016

Чтобы включить завершающие пустые строки, используйте другую реализацию split.

"".split("x", -1);   // returns {""} - valid - when no match is found, return the original string
"x".split("x", -1);  // returns {"", ""} - valid - trailing empty strings are included in the resultant array {"", ""}
"xa".split("x", -1); // returns {"", "a"} - valid
"ax".split("x", -1); // returns {"a", ""} - valid - trailing empty strings are included in the resultant array {"a", ""}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...