Сводка
Метод indexOf()
возвращает индекс первого вхождения указанного значения в строковый объект String
, на котором он был вызван, начиная с индекса fromIndex
. Возвращает -1, если значение не найдено.
Синтаксис
str.indexOf(searchValue[, fromIndex]
)
Параметры
searchValue
- Строка, представляющая искомое значение.
fromIndex
- Необязательный параметр. Местоположение внутри строки, откуда начинать поиск. Может быть любым целым числом. Значение по умолчанию установлено в 0. Если
fromIndex < 0
, поиск ведётся по всей строке (так же, как если бы был передан 0). ЕслиfromIndex >= str.length
, метод вернёт -1, но только в том случае, еслиsearchValue
не равен пустой строке, в этом случае он вернётstr.length
.
Описание
Символы в строке идут слева направо. Индекс первого символа равен 0, а последнего символа в строке stringName
равен stringName.length - 1
.
'Голубой кит'.indexOf('Голубой'); // вернёт 0 'Голубой кит'.indexOf('Голуббой'); // вернёт -1 'Голубой кит'.indexOf('кит', 0); // вернёт 8 'Голубой кит'.indexOf('кит', 5); // вернёт 8 'Голубой кит'.indexOf('', 9); // вернёт 9 'Голубой кит'.indexOf('', 11); // вернёт 11 'Голубой кит'.indexOf('', 12); // вернёт 11
Регистрозависимость
Метод indexOf()
является регистрозависимым. Например, следующее выражение вернёт -1:
'Голубой кит'.indexOf('голубой'); // вернёт -1
Проверка на вхождение
Обратите внимание, что значение 0 не вычисляется в true
, а значение -1 не вычисляется в false
. Поэтому, для проверки того, что конкретная строка содержится в другой строке, правильно делать так:
'Голубой кит'.indexOf('Голубой') !== -1; // true 'Голубой кит'.indexOf('Галубой') !== -1; // false
Примеры
Пример: использование методов indexOf()
и lastIndexOf()
В следующем примере используются методы indexOf()
и lastIndexOf()
для нахождения значений в строке "Дивный новый мир"
.
var anyString = 'Дивный новый мир'; console.log('Индекс первого вхождения «й» с начала строки равен ' + anyString.indexOf('й')); // Отобразит 5 console.log('Индекс первого вхождения «й» с конца строки равен ' + anyString.lastIndexOf('й')); // Отобразит 11 console.log('Индекс вхождения «новый» с начала строки равен ' + anyString.indexOf('новый')); // Отобразит 7 console.log('Индекс вхождения «новый» с конца строки равен ' + anyString.lastIndexOf('новый')); // Отобразит 7
Пример: метод indexOf()
и регистрозависимость
В следующем примере определяются две строковых переменных. Переменные содержат одинаковые строки, за исключение того, что слова во второй строке начинаются с заглавных букв. Первый вызов метода console.log()
отобразит 18. Но поскольку метод indexOf()
является регистрозависимым, строка "чеддер"
в переменной myCapString
не будет найдена, так что второй вызов метода console.log()
отобразит -1.
var myString = 'бри, пеппер джек, чеддер'; var myCapString = 'Бри, Пеппер Джек, Чеддер'; console.log('Вызов myString.indexOf("чеддер") вернул ' + myString.indexOf('чеддер')); // Отобразит 18 console.log('Вызов myCapString.indexOf("чеддер") вернул ' + myCapString.indexOf('чеддер')); // Отобразит -1
Пример: использование метода indexOf()
для подсчёта вхождений буквы в строку
Следующий пример устанавливает значение переменной count
в количество вхождений буквы в
в строку str
:
var str = 'Быть или не быть, вот в чём вопрос.'; var count = 0; var pos = str.indexOf('в'); while (pos !== -1) { count++; pos = str.indexOf('в', pos + 1); } console.log(count); // отобразит 3
Спецификации
Спецификация | Статус | Комментарии |
---|---|---|
ECMAScript 1-е издание. | Стандарт | Изначальное определение. |
ECMAScript 5.1 (ECMA-262) Определение 'String.prototype.indexOf' в этой спецификации. |
Стандарт | |
ECMAScript 6 (ECMA-262) Определение 'String.prototype.indexOf' в этой спецификации. |
Кандидат в рекомендации |
Совместимость с браузерами
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) |
Возможность | Android | Chrome для Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Базовая поддержка | (Да) | (Да) | (Да) | (Да) | (Да) | (Да) |