Page 92 - 6105
P. 92
if (~ str.indexOf ( "get")) {
alert ( 'збіг є!');
}
Взагалі, скористатися наявними можливостями мови неочевидним чином не
рекомендується, оскільки це погіршує читабельність коду. Однак, в даному
випадку, все в порядку. Просто треба пам'ятати: '~' читається як «не мінус один», а
"if ~ str.indexOf" читається як "якщо знайдено".
Щоб знайти всі входження підрядка, потрібно запустити indexOf в циклі. Як
тільки отримуємо чергову позицію – починаємо наступний пошук з наступною.
Приклад такого циклу:
var str = "Ослик Іа-Іа подивився на віадук"; // шукаємо
в цьому рядку
var target = "Іа"; // мета пошуку
var pos = 0;
while (true) {
var foundPos = str.indexOf (target, pos);
if (foundPos == -1) break;
alert (foundPos); // знайшли на цій позиції
pos = foundPos + 1; // продовжити пошук з наступної
}
Такий цикл починає пошук з позиції 0, потім знайшовши підрядок на
позиції foundPos, наступний пошук продовжить з позиції pos = foundPos + 1, і так
далі, поки щось знаходить.
Втім, той же алгоритм можна записати і коротше:
var str = "Ослик Іа-Іа подивився на віадук"; // шукаємо
в цьому рядку
var target = "Іа"; // мета пошуку
var pos = -1;
91