#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. Добавлен новый метод, который мне кажется наиболее эффективным. Могут быть некоторые проверки, необходимые для того, чтобы вы поняли идею.