LINUX.ORG.RU

Поиск в строке

 


0

1

Добрый день. Может кто то пояснить почему код

//для примера
var stroka = 'Stroka';
var find = prompt('Find', 'a');

function searchPartString(val, find){
	return (!val.indexOf(find)) ? console.log('We found your query') : console.log('Can not find this query');
}

searchPartString(stroka, find);

выдает false? но если ввести S,t,r,o,k выдает true


Потому что indexOf возвращает позицию подстроки в строке в виде числа, ! значит не равно нулю, но искомая позиция может быть и нулём, проверяй на -1

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width" />
        <title></title>
        link
    </head>
    <body>
        <script type="text/javascript" charset="utf-8">
            var stroka = 'Stroka cool';
            var find = prompt('Find', 't');
            function searchPartString(val, find){
	    return (val.indexOf(find)!==-1) ? alert('We found your query') :
                                              alert('Can not find this query');}
            searchPartString(stroka, find);
        </script>
    </body>
</html>

Если я ничего не перепутал:D

Dron ★★★★★
()
Ответ на: комментарий от Dron

кстати да, хорошее решение, спасибо)) Решение оказалось интереснее, нужно пользоваться циклом.

var pos = 0;
while (true) {
  var foundPos = str.indexOf(target, pos);
  if (foundPos == -1) break;

  alert( foundPos ); // нашли на этой позиции
  pos = foundPos + 1; // продолжить поиск со следующей
}

q13
() автор топика
Ответ на: комментарий от q13

а зачем тебе цикл, ты подстроку чтоли хочешь найти?

Deleted
()
Ответ на: комментарий от q13

Этот говнокод ищет последнюю подстроку в строке. Для таких упоротых есть lastIndexOf. Цикл для поиска подстроки не нужен. Называть говнокод «решением» тоже не нужно, пока в голове не появится понимание того, как это работает на самом деле.

ThisNameWasFree
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.