2016-11-04 7 views
0
var home = "Home sweet home"; 

Как найти индекс второго e в сладком, так как оба home.indexOf("ee") и home.lastIndexOf("ee") как вернуть 7. Если JS принимает ee как единое целое и возвращает свой индекс, почему он не может вернуть lastIndexOf этот блок?IndexOf и LastIndexOf в Javascript

+3

Просто добавьте 1 к возвращенному значению –

+0

Это, очевидно, способ обойти его, но есть ли способ получить индекс второго «e» в сладком? –

+1

@AlfMoh Это не обходной путь. Это правильное решение. Вы знаете, что второе «е» находится на месте «начала искомой строки + 1».Также вы должны знать, что 'indexOf/lastIndexOf' возвращает индекс, в котором может быть найдено ** целая строка **. Таким образом, вы должны объединить эти две части информации и вуаля. – freakish

ответ

3

lastIndexOf возвращает индекс первого символа в подстроке, где подстрока появляется последним в суперструне.

var home = "Home sweet sweet home"; 
 
//      ^Matches here 
 
console.log(home.lastIndexOf("ee"));

Чтобы найти вторую e, когда он образует часть строки ee используйте indexOf, а затем добавить 1 (вы знаете, что второй символ ee 1 символ мимо первого символа substring, так что вы знаете, что так много добавить, если вы хотите использовать последний символ подстроки, то вы можете рассчитать его, используя .length подстроки).

var home = "Home sweet home"; 
 
//    ^Matches here 
 
console.log(home.indexOf("ee") + 1);

Чтобы найти вторую e, когда он может или не может быть частью строки ee используйте indexOf, чтобы найти первую e, а затем использовать его снова передавая индекс символа после первого e как второй аргумент.

var home = "The fox ate the chicken"; 
 
//   ^ ^Matches in these places 
 
var first_index = home.indexOf("e"); 
 
var second_index = home.indexOf("e", first_index + 1); 
 
console.log(first_index, second_index);

0

индекс всегда начинается с левой стороны. lastIndexOf находит последнее вхождение искомого текста (или единицы, вы можете сказать) и возвращает индекс начала этого блока (слева). Обе функции возвращают тот же индекс, что и только одно вхождение строки поиска «ee». Если бы домашняя переменная имела другое происхождение «ee», тогда вы получили бы другой результат. Рассмотрим следующий пример:

var home = "Home sweet, sweet home"; 
home.indexOf("ee"); // will return 7 
home.lastIndexOf("ee") // will return 14 

Надеюсь, что это очищает ваше замешательство

0

Оба этих метода возвращают «стартовую» индекс строки, которую вы ищете.

Как указано в документации Java: java.lang.String.lastIndexOf(java.lang.String)

Возвращенный индекс является наименьшее значение к, для которых:

this.startsWith (ул, к)

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

var searchedStr = "ee"; 
var home = "Home sweet home"; 
var endIndex = home.lastIndexOf(searchedStr) + searchedStr.length - 1;