Как получить индекс строки совпадения в JS - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь получить индекс точной строки поиска, я построил функцию, которая возвращает индекс строк совпадения, где мне нужно получить индекс только с точным соответствием

вот моя функция

getIndicesOf = (searchStr, str) => {
              var searchStrLen = searchStr.length;
              if (searchStrLen === 0) {
                return [];
              }
              var startIndex = 0,
                index,
                indices = [];
              while ((index = str.indexOf(searchStr, startIndex)) > -1) {
                indices.push(index);
                startIndex = index + searchStrLen;
              }
               console.log("detercting " , indices );
            return indices;
};
console.log(getIndicesOf("go" , "go, I am going ")); //  [0, 9]

здесь я иду индекс начала и конца, Как получить индекс только строки с точным соответствием?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

замените цикл while этим кодом,

 while ((index = str.indexOf(searchStr, startIndex)) > -1) {
        if(str.substring(startIndex,searchStrLen) == searchStr)
        {
                indices.push(index);
                startIndex = index + searchStrLen;
        }
}
0 голосов
/ 30 ноября 2018

Первое вхождение го также содержит запятую.Так что это не точное совпадение.

Если вы все еще хотите получить все индексы go и go, в массиве слов вы можете использовать следующий скрипт:

var x = "go, I am going go";
arr = x.split(" ");
arr.map((e, i) => (e === "go" || e === "go,") ? i : '').filter(String)

Если вам нужно найти индекс в строке, вы можете использовать следующий подход

var x = "go, I am going go";
arr = x.split(" "); var index = 0;
arr.map((e, i) => {
     var occur = (e === "go" || e === "go,") ? index : '';
     index+=e.length+1;
     return occur}).filter(String)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...