Ce qui suit renvoie 2 indices.

J'aimerais regarder entre ces 2 indices pour le dernier saut de ligne.

var str = document.getElementById("output").value;
var indexFirst = str.indexOf(document.getElementById("prefix").value.toUpperCase());
var indexLast = str.lastIndexOf(document.getElementById("prefix").value.toUpperCase());
alert(indexFirst + " | " + indexLast);
0
Ethannn 11 juil. 2015 à 19:13

2 réponses

Meilleure réponse

Vous pouvez faire quelque chose comme ceci: Fonctionnement de jsFiddle

var newStr = str.substring(indexFirst, indexLast); // get only the relevant part of the string
var pos = newStr.lastIndexOf("\n"); // find the last new line's index
alert(indexFirst + pos); // add the found index to the initial search index

.substring() docs

.lastIndexOf() docs

Une autre option sera de couper uniquement la fin de la chaîne comme suit:

var newStr = str.substring(0, indexLast); // chop off the end
var pos = newStr.lastIndexOf("\n", indexStart); // search the last index starting from indexStart
alert(pos); // no need to add indexStart this way
1
Yotam Omer 11 juil. 2015 à 16:38

Vous pouvez le faire de plusieurs façons.

Sous-chaîne

Si vous souhaitez emprunter l'itinéraire que vous avez déjà commencé, vous utilisez:

str.substring(indexFirst + 1, indexLast);

Exemple de travail

http://codepen.io/anon/pen/JdveyL

Expression régulière (inutile après avoir relu votre réponse)

En supposant | est "obtenir du texte entre ceci"

var re = /\|(.*?)\|/; 
var str = '|Hello|';
var m;

if ((m = re.exec(str)) !== null) {
    if (m.index === re.lastIndex) {
        re.lastIndex++;
    }
    // View your result using the m-variable.
    // eg m[0] etc.
}
0
ZeroBased_IX 11 juil. 2015 à 16:22