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

Wie Sie beide seit den Index des zweiten e in süß finden Sie home.indexOf("ee") und home.lastIndexOf("ee") beide 7 zurück. Wenn JS ee als eine Einheit nimmt und seinen 'Index zurückgibt, warum kann es nicht den lastIndexOf dieser Einheit zurückgeben?indexOf und lastIndexOf in Javascript

+3

Fügen Sie einfach 1 zum zurückgegebenen Wert hinzu –

+0

Das ist offensichtlich eine Möglichkeit, um es zu umgehen, aber gibt es eine Möglichkeit, den Index des zweiten "e" in süß zu bekommen? –

+1

@ AlfMoh Das ist keine Problemumgehung. Es ist eine richtige Lösung. Sie wissen, dass das zweite "e" an der Stelle "Beginn der gesuchten Zeichenfolge + 1" ist.Sie sollten auch wissen, dass 'indexOf/lastIndexOf' den Index zurückgibt, bei dem ** ganze Zeichenfolge ** gefunden werden kann. Also müssen Sie diese beiden Informationen kombinieren und voila. – freakish

Antwort

3

lastIndexOf gibt den Index des ersten Zeichens in der Teilzeichenkette zurück, in dem die Teilzeichenkette zuletzt im Superstring angezeigt wird.

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

Um den zweiten e zu finden, wenn es Teil der Zeichenfolge ee bildet indexOf verwenden und fügen Sie dann 1 (Sie wissen schon das zweite Zeichen von ee ist 1 Zeichen hinter dem ersten Zeichen der Teilstring, so dass Sie wissen, dass Sie so viel hinzufügen, wenn Sie das letzte Zeichen des Teilstrings wollen, dann können Sie es mit der .length des Teilstrings berechnen.

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

die zweite e zu finden, wenn es nicht oder können, indexOfee Teil der Zeichenfolge bilden verwenden, um die erste e, zu finden und es dann wieder verwenden Sie den Index des Zeichens vorbei nach dem ersten e als zweites Argument.

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

Index beginnt immer von links. lastIndexOf findet das letzte Vorkommen des gesuchten Textes (oder der Einheit, wie Sie vielleicht sagen) und gibt den Index des Anfangs dieser Einheit (von links) zurück. Beide Funktionen geben denselben Index zurück wie nur ein Vorkommen der Suchzeichenfolge "ee". Wenn die Home-Variable ein anderes Vorkommen von "ee" hätte, würden Sie ein anderes Ergebnis erhalten. Betrachten Sie das folgende Beispiel:

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

Hope this löscht Ihre Verwirrung

0

Diese beiden Methoden, um den „Start“ Index der Zeichenfolge zurück, die Sie suchen.

Wie in der Java-Dokumentation angegeben: java.lang.String.lastIndexOf(java.lang.String)

Der zurückgegebene Index ist der kleinste Wert k für die gilt:

this.startsWith (str, k)

, wenn Sie also Möchten Sie den Endindex einer beliebigen Zeichenfolge finden, die Sie suchen, gibt es einen einfachen Weg:

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