String.prototype.indexOf()
Сводка
Метод 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
.
js
"Синий кит".indexOf("Синий"); // вернёт 0
"Синий кит".indexOf("Голубой"); // вернёт -1
"Синий кит".indexOf("кит", 0); // вернёт 6
"Синий кит".indexOf("кит", 5); // вернёт 6
"Синий кит".indexOf("", 8); // вернёт 8
"Синий кит".indexOf("", 9); // вернёт 9
"Синий кит".indexOf("", 10); // вернёт 9
Регистрозависимость
Метод indexOf()
является регистрозависимым. Например, следующее выражение вернёт -1:
js
"Синий кит".indexOf("синий"); // вернёт -1
Проверка на вхождение
Обратите внимание, что значение 0 не вычисляется в true
, а значение -1 не вычисляется в false
. Поэтому, для проверки того, что конкретная строка содержится в другой строке, правильно делать так:
js
"Синий кит".indexOf("Синий") !== -1; // true
"Синий кит".indexOf("Голубой") !== -1; // false
Примеры
Пример: использование методов indexOf()
и lastIndexOf()
В следующем примере используются методы indexOf()
и lastIndexOf()
для нахождения значений в строке "Дивный новый мир"
.
js
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.
js
var myString = "бри, пеппер джек, чеддер";
var myCapString = "Бри, Пеппер Джек, Чеддер";
console.log(
'Вызов myString.indexOf("чеддер") вернул ' + myString.indexOf("чеддер"),
);
// Отобразит 18
console.log(
'Вызов myCapString.indexOf("чеддер") вернул ' + myCapString.indexOf("чеддер"),
);
// Отобразит -1
Пример: использование метода indexOf()
для подсчёта вхождений буквы в строку
Следующий пример устанавливает значение переменной count
в количество вхождений буквы в
в строку str
:
js
var str = "Быть или не быть, вот в чём вопрос.";
var count = 0;
var pos = str.indexOf("в");
while (pos !== -1) {
count++;
pos = str.indexOf("в", pos + 1);
}
console.log(count); // отобразит 3
Спецификации
Specification |
---|
ECMAScript Language Specification # sec-string.prototype.indexof |
Совместимость с браузерами
BCD tables only load in the browser