js str


var str = 'абвгдеёжзи';

console.log('(1, 2): '   + str.substr(1, 2));   // '(1, 2): бв'
console.log('(-3, 2): '  + str.substr(-3, 2));  // '(-3, 2): жз'
console.log('(-3): '     + str.substr(-3));     // '(-3): жзи'
console.log('(1): '      + str.substr(1));      // '(1): бвгдеёжзи'
console.log('(-20, 2): ' + str.substr(-20, 2)); // '(-20, 2): аб'
console.log('(20, 2): '  + str.substr(20, 2));  // '(20, 2): '

https://learn.javascript.ru/string#поиск-всех-вхождений

https://learn.javascript.ru/regexp-methods

 

/*
Для красивого вызова 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";
if (~str.indexOf("get")) {
  alert( 'совпадение есть!' );
}

 

// Поиск всех вхождений
var str = "Ослик Иа-Иа посмотрел на виадук"; // ищем в этой строке
var target = "Иа"; // цель поиска
var pos = -1;
while ((pos = str.indexOf(target, pos + 1)) != -1) {
  alert( pos );
}