Page 91 - 6105
P. 91
Для пошуку підрядка є метод indexOf (підрядок [, початок]).
Він повертає позицію, на якій знаходиться підрядок або -1, якщо нічого не
знайдено. наприклад:
var str = "Widget with id";
alert (str.indexOf ( "Widget")); // 0, тому що "Widget"
знайдений прямо на початку str
alert (str.indexOf ( "id")); // 1, тому що "Id"
знайдений, починаючи з позиції 1
alert (str.indexOf ( "widget")); // -1, що не знайдено,
так як пошук враховує регістр
Необов'язковий другий аргумент дозволяє шукати, починаючи з вказаної
позиції. Наприклад, перший раз "id" з'являється на позиції 1. Щоб знайти його
наступну появу запустимо пошук з позиції 2:
var str = "Widget with id";
alert (str.indexOf ( "id", 2)) // 12, пошук розпочато з
позиції 2
Також існує аналогічний метод lastIndexOf, який веде пошук не з початку, а
з кінця рядка. Для красивого виклику indexOf застосовується побітовий оператор
НЕ '~'.
Справа в тому, що виклик ~ n еквівалентний виразу - (n + 1), наприклад:
alert (~ 2); // - (2 + 1) = -3
alert (~ 1); // - (1 + 1) = -2
alert (~ 0); // - (0 + 1) = -1
alert (~ -1); // - (- 1 + 1) = 0
Як видно, ~ n – нуль тільки в разі, коли n == -1.
Тобто, перевірка if (~ str.indexOf (...)) означає, що результат indexOf
відмінний від -1, тобто збіг є. Наприклад,
var str = "Widget";
90