Javascript поиск строки, начинающейся с конца и заканчивающейся на другой строке

#javascript

#javascript

Вопрос:

У меня есть строка, подобная этой:

The planet is very big and the planet is heavy.

Используя Javascript, я хотел бы искать строку, начинающуюся с конца и заканчивающуюся на другой строке.

Примером может быть, начните со слова heavy , выполните поиск по слову planet , но остановитесь на слове big . Второй экземпляр planet в этом примере — это то, что я хочу, а не первый. Поэтому, если нет экземпляра planet between big , а heavy затем я хочу получить indexOf -1 .

Спасибо.

Редактировать: я могу выполнить это, разделив свою строку на нужное мне слово, а не выполнив поиск во втором элементе массива для моего текста, но мне было интересно, есть ли функция для этого.

Комментарии:

1. Вы пробовали что-нибудь до сих пор?

2. Если вы уже нашли решение, вопрос не должен формулироваться «как мне …» Что не так с вашим решением? Зачем вам альтернатива?

Ответ №1:

Вы могли бы разделить на слово «big», а затем только lastIndexOf из последней группы подстрок.

IE:

 function foo(input,search,stopWord){
    //Split the input
    var arr=input.split(stopWord);

    //return only from last substring group
    return arr[arr.length-1].lastIndexOf(search);
}
foo("The planet is very big and the planet is heavy.","planet","big");
  

Дает ли это результат, который вы ожидаете?

Ответ №2:

Выполнить

 var startIdx = string.lastIndexOf('big');
var grabIdx = string.lastIndexOf('planet');
(startIdx < grabIdx)?grabIdx: -1)
  

Комментарии:

1. Поскольку он хочет прекратить поиск по слову-разделителю, он не хотел бы искать все подстроки — только последнюю.

2. Разделителем будет «». Так что ищите в обратном направлении, и если вы нажмете «большой» конец.

3. Но ya lastIndexOf или indexOf намного эффективнее.

4. Ах, я понимаю, к чему вы клонили. Моей единственной критикой было бы то, что возвращаемое значение будет представлять собой количество слов с конца ввода, а не количество символов, как это принято в стандарте. Но да, это может сработать.

5. Добавлен новый метод, который мне кажется наиболее эффективным. Могут быть некоторые проверки, необходимые для того, чтобы вы поняли идею.