str = <a href = "#homecoupon" class ="current">COUPONS</a>
如何从str获取COUPONS这个词。单词#homecoupon可能会更改为其他单词,因此我无法执行检索第n个位置值的子字符串方法。 class ="current">COUPONS</a>
始终是固定的。
有没有办法可以追溯并检索最后一个第n个单词。
答案 0 :(得分:5)
在浏览器中解析HTML的最佳方法是让浏览器为您执行此操作。
在内存中创建一个虚拟元素,然后将其innerHTML
设置为您的字符串。然后,您可以使用常规DOM API来查找该锚元素的文本:
var div = document.createElement('div');
div.innerHTML = str;
var word = div.firstChild.textContent;
这是小提琴:http://jsfiddle.net/mREFu/
如果你仍然需要支持IE&lt; 9,你必须使用它:
var word = div.firstChild.textContent || div.firstChild.innerText;
或者您可以从文本节点获取文本:
var word = div.firstChild.childNodes[0].nodeValue;
答案 1 :(得分:0)
如果它是一个实际的字符串而不是网页的一部分:
var str = '<a href = "#homecoupon" class ="current">COUPONS</a>';
var word = str.match(/"current">(.*?)</);
if(word) word = word[1]; //== COUPONS
或者,如果你正在使用jQuery,那么你可以去实际的网页:
$('a.current').each(function(){
alert($(this).text());
});
答案 2 :(得分:0)
使用substring()
和indexof()
,您可以执行此操作。
str = '<a href = "#homecoupon" class ="current">COUPONS</a>';
// get rid of </a> assuming the string always ends with it
var x = str.substring(0,str.length-4);
// use the fixed part to get the value you want
alert(x.substring(x.indexOf('class ="current">')+17))
OR
str = '<a href = "#homecoupon" class ="current">COUPONS</a>';
fixedPart = 'class ="current">';
// use the fixed part to get the value you want assuming str always ends with </a>
alert(str.substring(str.indexOf(fixedPart)+fixedPart.length, str.length-4))