Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   проверка на вхождение строки в строке с переизбытком? (https://javascript.ru/forum/jquery/37242-proverka-na-vkhozhdenie-stroki-v-stroke-s-pereizbytkom.html)

Kvark 12.04.2013 15:27

проверка на вхождение строки в строке с переизбытком?
 
Приветсвую, извиняюсь если вопрос покажеться ламерским, но никак не пойму как .indexOf правильно пользоваться :(

у меня есть строки:
strMsg1 = "Маша косит траву, а Дима пьет пиво";
strMsg2 = "Дима пьет пиво";
strMsg3 = "фигня какая";
strMsg1.indexOf(strMsg2) //выдает: 20 и это правильно, а вот
strMsg2.indexOf(strMsg1) //выдает: -1 и это тоже логично!
strMsg1.indexOf(strMsg3) //выдает: -1


но, мне нужно чтоб выдало что то типа: -20? Тоесть определить что вхождение есть, но оно длинее искомого? Вопрос как? Пока думаю как то с проверкой длины собщений и перестановкой поиграться, но может знаете более изящное решение?

devote 12.04.2013 15:38

function positionOf(str1, str2) {
    var pos = str1.indexOf(str2);
    if (pos === -1) {
        pos = str2.indexOf(str1);
        if (pos === -1) {
            return null;
        }
        pos = -pos;
    }
    return pos;
}

var strMsg1 = "Маша косит траву, а Дима пьет пиво";
var strMsg2 = "Дима пьет пиво";

alert(positionOf(strMsg1, strMsg2)); // 20
alert(positionOf(strMsg2, strMsg1)); // -20
alert(positionOf("Test", strMsg1)); // null

Kvark 12.04.2013 15:55

да, спасибо, а что значит "==="?

devote 12.04.2013 16:07

Цитата:

Сообщение от Kvark
а что значит "==="?

строгое равенство
alert(0 == '0'); // не строгое, покажет true
alert(0 === '0'); // строгое, покажет false
Строгое равенство, работает быстрее, так как не заставляет интерпретатор использовать приведение типов

Kvark 12.04.2013 16:16

О, что то новенькое, понял, спасибо


Часовой пояс GMT +3, время: 13:44.