JS метод String.indexOf()
Загальний опис
Метод String.prototype.indexOf()
відіграє ключову роль у визначенні позиції підрядка всередині рядка. Цей метод повертає індекс першої появи заданого підрядка в рядку. Якщо підрядок не знайдено, метод повертає -1
. indexOf()
є незамінним інструментом для обробки тексту, аналізу даних, і в багатьох інших сценаріях, де потрібно знайти конкретний фрагмент в рядку.
Основний спосіб використання indexOf()
полягає у виклику методу на рядковому об'єкті з передачею підрядка як аргумента. Наприклад:
let sentence = "Hello, world!";
let word = "world";
console.log(sentence.indexOf(word)); // виведе 7
У цьому прикладі, метод повідомляє, що підрядок "world"
починається з індексу 7
у рядку sentence
.
Можна також вказати другий аргумент для indexOf()
, який визначає позицію у рядку, з якої почнеться пошук. Це корисно, коли потрібно знайти підрядок, що повторюється, або коли хочеться обмежити область пошуку:
console.log(sentence.indexOf("o", 5)); // виведе 8
Тут пошук літери "o"
починається з індексу 5
, і метод знаходить наступну літеру "o"
на позиції 8
.
Важливо зазначити, що indexOf()
чутливий до регістру, тому пошук "Hello"
і "hello"
в одному і тому ж рядку дадуть різні результати. Ось чому при роботі з текстом, який може мати різний регістр, важливо враховувати цю особливість.
Використання indexOf()
є основоположним для багатьох алгоритмів обробки тексту в JavaScript, і знання його особливостей допоможе писати більш ефективний і зрозумілий код.
Нотатка: | Важливо пам'ятати, що метод |
Нотатка: |
|
Нотатка: | Метод дозволяє вказати початкову позицію пошуку другим аргументом. Це корисно, коли потрібно знайти повторення підрядка або ігнорувати певну частину рядка. Наприклад, |
Порада: | Якщо вам потрібно перевірити, чи міститься підрядок у рядку,
|
Синтаксис
indexOf(searchString)
indexOf(searchString, position)
Параметри
- *
searchString
Підрядок, який потрібно знайти у основному рядку. Всі значення автоматично перетворюються на рядки, тому пропуск аргументу або передача
undefined
спричинить пошук рядка"undefined"
, що зазвичай не є бажаним.position
Позиція в рядку, з якої починається пошук
searchString
. Якщо не вказано, за замовчуванням приймається 0, що означає початок рядка. Якщоposition
більше довжини рядка, пошук в рядку не відбувається. Якщоposition
менше нуля, метод поводиться так, нібиposition
був 0.
Return
index
Повертає ціле число, яке вказує індекс першого входження
searchString
у викликаючому рядку. ЯкщоsearchString
не знайдено, повертається -1.Цікавий випадок виникає при пошуку порожнього рядка (
""
): якщо другий аргумент відсутній або його значення менше довжини рядка, метод повертає значення цього аргументу (або 0, якщо аргумент відсутній).Наприклад,
'hello world'.indexOf("")
повертає 0, а'hello world'.indexOf("", 3)
повертає 3. Однак, якщо значення другого аргументу дорівнює або перевищує довжину рядка, метод повертає довжину рядка. Наприклад,'hello world'.indexOf("", 11)
повертає 11.
Переглядачі
Переглядач | |||||
---|---|---|---|---|---|
1 |
1 |
1 |
3 |
12 |
Переглядач | ||||
---|---|---|---|---|
4.4 |
18 |
4 |
1 |
Переглядач | ||
---|---|---|
0.10.0 |
1.0 |
Приклади
У цьому прикладі користувачі можуть ввести основний рядок і підрядок, а потім натиснути кнопку, щоб знайти позицію підрядка. Результат (індекс або повідомлення "Не знайдено") відображається на сторінці.
У цьому прикладі ми використовуємо String.prototype.indexOf()
для знаходження позиції першої появи підстроки в рядку. Це базове застосування методу, яке може бути корисним для простої перевірки наявності певного тексту в рядку.
// Створюємо рядок
let message = "Привіт, світ JavaScript!";
// Знаходимо позицію слова "JavaScript" в рядку
let position = message.indexOf("JavaScript");
console.log(position); // Виводить: 13
У цьому прикладі String.prototype.indexOf()
використовується для визначення наявності всіх входжень підстроки в рядок. Ми використовуємо цикл для пошуку кожного наступного входження підстроки, оновлюючи позицію пошуку після кожного знаходження.
// Створюємо рядок
let text = "JavaScript - мова програмування. JavaScript використовується в браузерах.";
// Починаємо пошук від позиції 0
let searchFor = "JavaScript";
let position = 0;
while ((position = text.indexOf(searchFor, position)) !== -1) {
console.log("Знайдено на позиції: " + position);
position += searchFor.length; // Оновлюємо позицію для наступного пошуку
}