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
   87   88   89   90   91   92   93   94   95   96   97