2013-12-11 98 views
0

我想要得到的/<something>[@id在字符串中出現的最後一個索引,使用純JavaScript的一個模式的最後一個索引查找使用JavaScript

例如:/div[@id/span[@id/input[@id

我能得到最後的使用

var n = xpath.lastIndexOf("[@id"); 
    var res = xpath.substring(n); 

[@id指數什麼,我需要的是/div[@id指數開始/

這裏是字符串我將與被打的一個例子,

例字符串:

「/ HTML /體/格[@ ID = 'PAGE- 渦卷'] /格[ @ ID = '內容'] /格[@ ID = 'centercol'] /格[@ ID = 'ns_1FAHQHPMXDQ2W2ER2822_4131_Widget'] /格[@ ID = 'ns_1FAHQHPMXDQ2W2ER2822_4131_ItemRow'] /格[@類= 's9OtherItems'] /格[ @ class ='fluid asin s9a0']/div [@ class ='inner']/div [@ class ='s9hl']/a [@ class ='title ntTitle noLinkDecoration']/div [@ class = 's9ImageWrapper']/div [@ class ='imageContainer']「

+3

Java腳本!= Java –

+0

那裏有'+ * +'什麼?這當然是語法錯誤。 –

+0

對不起,我只是想這個,我編輯它 – CleanX

回答

1

真可謂是不容易正則表達式:

var str = "/div[@id, /span[@id"; 
var lastIndex = str.lastIndexOf("[@id"); 
if (lastIndex !== -1) { 
    --lastIndex; 
    while (lastIndex >= 0) { 
     if (str.charAt(lastIndex) === "/") { 
      break; 
     } 
    } 
} 
if (lastIndex !== -1) { 
    console.log("Found at " + lastIndex); 
} 
else { 
    console.log("Not found"); 
} 

Live Example | Source

+0

nope這給了我,當我試圖從該索引獲得子字符串,='page-wrap' ] /格[@ ID = '內容'] /格[@ ID = 'centercol'] /格[@ ID = 'ns_1FAHQHPMXDQ2W2ER2822_4131_Widget'] /格[@ ID = 'ns_1FAHQHPMXDQ2W2ER2822_4131_ItemRow'] /格[@類= 's9OtherItems' ]/div [@ class ='fluid asin s9a0']/div [@ class ='inner']/div [@ class ='s9hl']/a [@ class ='title ntTitle noLinkDecoration']/div [@class ='s9ImageWrapper']/div [@ class ='imageContainer'] – CleanX

+0

@CleanX:「nope this gives me _______,when ...」?? –

+0

@CleanX:非正則表達式的解決方案比較容易,我提出的正則表達式解決方案是在倒數第二個匹配之後給出第一個索引*,而不是我們想要的。 :-) –

0

這個怎麼樣?

String.prototype.reverse = function() { 
    return this.split("").reverse().join(""); 
} 

String.prototype.lastIndexOf = function(s) { 
    var index = this.reverse().indexOf(s.reverse()); 
    return index >= 0 ? this.length - index - s.length : index; 
}