2015-07-11 59 views
0

以下返回2個索引。索引之間的搜索

我想看看這兩個指標之間的最後一個換行符。

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

無關,但請將'document.getElementById(「prefix」).value.toUpperCase()'放入它自己的變量中。現在閱讀起來很難。看起來像一個簡單的子字符串,'lastIndexOf'也可以用於換行符,不是嗎? –

+0

請指定您的問題。你特別的問題是什麼? –

+0

Vladimir |可以說前面給出的例子返回20和88.我需要找到這兩個索引之間的最後一個換行符。 – Ethannn

回答

1

你可以去和做這樣的事情:Working 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

另一種選擇將是隻剁下字符串的末尾如此:

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 
0

您可以通過幾種方法做到這一點。

子串

如果你想下去,你已經開始,那麼你使用的路線:

str.substring(indexFirst + 1, indexLast);

工作實例

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

正則表達式(重新閱讀您的答案後不必要)

假設|是 「得到這個之間的文本」

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

只是注意到你想要最後一個換行符。約坦的答案將是你的正確答案。 –