Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.04.2013, 15:27
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

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

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


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

Последний раз редактировалось Kvark, 12.04.2013 в 15:32.
Ответить с цитированием
  #2 (permalink)  
Старый 12.04.2013, 15:38
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

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
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 12.04.2013, 15:55
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

да, спасибо, а что значит "==="?
Ответить с цитированием
  #4 (permalink)  
Старый 12.04.2013, 16:07
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Kvark
а что значит "==="?
строгое равенство
alert(0 == '0'); // не строгое, покажет true
alert(0 === '0'); // строгое, покажет false
Строгое равенство, работает быстрее, так как не заставляет интерпретатор использовать приведение типов
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 12.04.2013, 16:16
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

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


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка строки ввода логина в форме assessor Events/DOM/Window 17 13.11.2012 12:52
Проверка строки на соответствие регулярному выражению Telnet Общие вопросы Javascript 9 17.07.2011 22:33