String.lastIndexOf() возвращает последний индекс указанного символа(ов) или подстроки. Если аргумент не найден в строке, метод возвращает -1. Обратите внимание, что индексы для строки начинаются с нуля.
1. API String.lastIndexOf()
Метод lastIndexOf() имеет четыре перегруженные формы.
int lastIndexOf(String substring)int lastIndexOf(String substring, int fromIndex)int lastIndexOf(int ch)int lastIndexOf(int ch, int fromIndex)
Аргументы метода:
- подстрока или символ: подстрока или символ, которые необходимо найти.
- fromIndex: поиск начинается с указанного места в строке.
Метод возвращает индекс последнего вхождения указанной подстроки или -1, если такого вхождения нет.
2. Пример String.lastIndexOf()
В следующей программе Java подстрока «Java» появляется дважды. Когда мы ищем строку с помощью lastIndexOf(), она возвращает позицию последней строки «Java». Буква «J» хранится в индексной позиции 41, что мы можем проверить, выполнив поиск символа «J».
String str = "Hello world Java programmers, welcome to Java world !";Assertions.assertEquals(41, str.lastIndexOf("Java"));Assertions.assertEquals(41, str.lastIndexOf('J'));
Предположим, что мы хотим найти подстроку из определенной позиции в строке. Например, мы хотим узнать расстояние слова «Java» от запятой. Мы можем передать позицию запятой в качестве второго аргумента метода. На этот раз «Java» находится в позиции индекса 12.
String str = "Hello world Java programmers, welcome to Java world !";Assertions.assertEquals(12, str.lastIndexOf("Java", str.indexOf(",")));Assertions.assertEquals(12, str.lastIndexOf('J', str.indexOf(",")));
3. Нулевые и пустые строки
Передача нулевого аргумента в lastIndexOf() не допускается и приведет к исключению NullPointerException.
Assertions.assertThrows(NullPointerException.class,()->{str.lastIndexOf(null);});
Положение пустой строки всегда считается концом строки, а метод возвращает значение, вычисленное с помощью String.length().
Assertions.assertEquals(str.length(), str.lastIndexOf(""));
Ссылка: документация по Java String