Как работает метод split для расчета массива

1

У меня есть эта программа

    String s = "aa";
    String[] tokens = s.split("a");
    System.out.println(tokens.length);

Он напечатает 0

Теперь, когда я изменяю строку s на "aa aaaa" это будет печатать только 3, но почему? это должно быть 6?

И когда я добавлю место после "aa aaaa " он будет печатать 7, которое должно быть ожидаемым значением.

Так почему же метод split ведет себя так?

  • 1
    Вы начали с чтения Javadoc?
Теги:
string
split

2 ответа

2
Лучший ответ

Поскольку документация split method говорит:

 Trailing empty strings are therefore not included in the resulting array. 

(Скользящая пустые строки) также может ссылаться на регулярное выражение, вы даете, который находится в вашем примере:, означает, что все конечные обыкновение быть в результирующем массиве. a a

Итак, давайте посмотрим, как он разделен

"aa"

будет печатать 0, потому что это завершающий

"aa a"

напечатает 3

Теперь к тому времени, вы добавляете пространство оно не будет прицепным больше, строка теперь будет расщепляется между начиная с первого индекса до известной задней. a a a

"aa aaaa"

прежнему печати 3, потому что aaaa является трейлинг a

"aa aaaa "

напечатает 7

Теперь опять не отставая больше для этого будет расщепляются между a a's

0

Из документации Java

Splits this string around matches of the given regular expression. This method works as if by invoking the two-argument split method with the given expression and a limit argument of zero. Trailing empty strings are therefore not included in the resulting array.

Пример:-

Строка boo:and:foo, например, дает следующие результаты с этими выражениями:

Regex Result: { "boo", "and", "foo" } o { "b", "", ":and:f" }

Следовательно, все задние a будут отброшены. Чтобы выполнить полный сплит, возвращающий каждый отдельный элемент: -

    String s = "aa";
    String[] tokens = s.split("");
    System.out.println(tokens.length); //this will output 3 :- "","a","a"

Ещё вопросы

Сообщество Overcoder
Наверх
Меню