lastIndexOf() в JavaScript
- Что такое lastIndexOf()
- Синтаксис
- Поиск последнего совпадения
- Если совпадений нет
- Регистр имеет значение
- Поиск с позиции
- lastIndexOf() и indexOf()
- Проверка повторов
- Итого
lastIndexOf() ищет последнее вхождение текста в строке и возвращает его индекс.
let text = 'кот и кот';
console.log(text.lastIndexOf('кот'));
Результат:
6
В строке два слова ‘кот’. Метод вернул индекс второго, потому что это последнее совпадение.
Что такое lastIndexOf()
lastIndexOf() - это метод строки. Он ищет текст с конца строки и возвращает индекс найденного совпадения.
let message = 'one two one';
console.log(message.lastIndexOf('one'));
Результат:
8
Первое ‘one’ находится с индекса 0, но метод вернул индекс последнего совпадения.
Синтаксис
Основная запись выглядит так:
string.lastIndexOf(searchString);
searchString - текст, который нужно найти.
let fileName = 'archive.final.zip';
console.log(fileName.lastIndexOf('.'));
Результат:
13
Метод нашел последнюю точку в имени файла.
Поиск последнего совпадения
lastIndexOf() полезен, когда в строке есть несколько одинаковых фрагментов, а нужен последний.
let path = '/users/admin/profile';
console.log(path.lastIndexOf('/'));
Результат:
12
Последний слеш стоит перед словом ‘profile’.
После этого индекс можно использовать, например, чтобы получить часть строки.
let path = '/users/admin/profile';
let slashIndex = path.lastIndexOf('/');
console.log(path.slice(slashIndex + 1));
Результат:
profile
Если совпадений нет
Если искомого текста в строке нет, lastIndexOf() возвращает -1.
let text = 'JavaScript';
console.log(text.lastIndexOf('Python'));
Результат:
-1
Это поведение такое же, как у indexOf().
Регистр имеет значение
lastIndexOf() учитывает регистр букв.
let text = 'JavaScript javascript';
console.log(text.lastIndexOf('JavaScript'));
console.log(text.lastIndexOf('javascript'));
Результат:
0
11
Для JavaScript это разные строки, потому что первая начинается с большой буквы, а вторая - с маленькой.
Поиск с позиции
Вторым аргументом можно указать позицию, откуда начинать поиск назад.
string.lastIndexOf(searchString, position);
Например, найдем последнее слово ‘two’ не во всей строке, а только до индекса 10.
let text = 'one two one two';
console.log(text.lastIndexOf('two'));
console.log(text.lastIndexOf('two', 10));
Результат:
12
4
Без второго аргумента метод нашел последнее ‘two’. С позицией 10 поиск пошел назад и нашел первое ‘two’.
lastIndexOf() и indexOf()
indexOf() возвращает первое совпадение, а lastIndexOf() - последнее.
let text = 'кот и кот';
console.log(text.indexOf('кот'));
console.log(text.lastIndexOf('кот'));
Результат:
0
6
Если совпадение в строке только одно, оба метода вернут одинаковый индекс.
let text = 'кот';
console.log(text.indexOf('кот'));
console.log(text.lastIndexOf('кот'));
Результат:
0
0
Проверка повторов
Если нужно понять, встречается ли символ или слово больше одного раза, можно сравнить результат indexOf() и lastIndexOf().
let value = '10,20,30';
console.log(value.indexOf(',') !== value.lastIndexOf(','));
Результат:
true
Первая и последняя запятая находятся на разных позициях, значит запятых в строке больше одной.
Итого
lastIndexOf() ищет последнее вхождение текста в строке.
- Метод возвращает индекс последнего совпадения.
- Если совпадения нет, возвращается
-1. - Регистр букв влияет на результат поиска.
- Вторым аргументом можно указать позицию, откуда начинать поиск назад.
indexOf()ищет первое совпадение, аlastIndexOf()- последнее.