Java String подстрока()

Узнайте, как получить подстроку из заданной строки в Java между двумя индексами. Обратите внимание, что String — это тип на основе массива символов, а первый символ строки имеет индекс 0.

Если мы сохраним строку «Hello World» в Java, то в памяти будет создан массив символов размером 11 для хранения всех символов значения строки.

String str = "Hello World";

Ниже приведено графическое изображение массива в памяти.

Java String подстрока()0

1. API String.substring()

String.substring() в Java возвращает новую строку, которая является подстрокой заданной строки, которая начинается с startIndex до необязательного endIndex. Эти индексы определяют позицию подстроки в исходной строке.

Метод substring() принимает два аргумента:

  • beginIndex: начальный индекс подстроки. Эта позиция индекса является включающей, т.е. символ с указанным индексом включен в подстроку.
  • endIndex: конечный индекс подстроки. Эта позиция индекса является исключительной, т.е. символ с указанным индексом НЕ включен в подстроку.
String substring(int beginIndex)String substring​(int beginIndex, int endIndex)

Метод возвращает подстроку между допустимыми начальным и конечным индексами. Если индексы недопустимы, то мы можем получить ошибку IndexOutOfBoundsException во время выполнения.

2. Примеры подстрок

Давайте рассмотрим несколько примеров, чтобы понять, как работает метод substring().

2.1. Использование beginIndex и endIndex

Передайте оба индекса(начальный и конечный), когда нам нужно найти подстроку, начиная с заданной позиции индекса до заданной конечной позиции индекса. Обратите внимание, что:

  • beginIndex может быть больше endIndex.
  • Оба индекса должны быть больше или равны 0.
  • Оба индекса должны быть меньше длины строки.
  • Если мы передадим один и тот же индекс для обоих аргументов, будет возвращена пустая строка.

В следующей программе мы находим подстроку между индексами 0 и 5. Помните, что конечный индекс является исключающим, поэтому символ в конечном индексе не включается в подстроку. В этом случае символ в конечном индексе является пробелом.

Подстрока строки Java()1

Аналогично мы можем искать подстроку между индексами от 2 до 8.

Подстрока строки Java()2
Assertions.assertEquals("llo Wo", str.substring(2, 8));

2.2.Использование только beginIndex

Если мы не передаем аргумент endIndex, подстрока берется до последнего символа строки. Другими словами, если не указано, значение endIndex всегда равно 'string.length() – 1'.

В следующем примере мы получаем подстроку из позиции индекса 6.

Подстрока строки Java()3
Assertions.assertEquals("World", str.substring(6));

3. Исключение выхода за пределы индекса

Как упоминалось ранее, если мы передадим недопустимый индекс(например, отрицательное значение индекса), которого нет в массиве символов, или начальный индекс больше конечного индекса, то мы получим исключение IndexOutOfBoundsException во время выполнения.

Assertions.assertThrows(IndexOutOfBoundsException.class,() -> { //invalid indexstr.substring(-1);});Assertions.assertThrows(IndexOutOfBoundsException.class,() -> { //begin index > end indexstr.substring(6, 4);});

4. Заключение

В этом коротком руководстве по Java мы научились получать подстроку указанной строки, используя начальный и конечный индексы. Мы изучили правила о допустимых значениях индекса, а начальный индекс является включающим, а конечный индекс является исключающим.

Исходный код на Github

Прокрутить вверх