0
str = <a href = "#homecoupon" class ="current">COUPONS</a>

如何从 str 中获取 COUPONS 一词。#homecoupon 这个词可能会更改为其他词,因此我无法执行检索第 n 个位置值的子字符串方法。将class ="current">COUPONS</a>永远是固定的。

有没有办法可以回溯并检索最后一个单词。

4

3 回答 3

5

在浏览器中解析 HTML 的最佳方式是让浏览器为您完成。

在内存中创建一个虚拟元素,然后将其设置innerHTML为您的字符串。然后,您可以使用常规 DOM API 来查找该锚元素的文本:

var div = document.createElement('div');
div.innerHTML = str;
var word = div.firstChild.textContent;

这是小提琴:http: //jsfiddle.net/mREFu/


如果你仍然需要支持 IE < 9,你必须使用这个:

var word = div.firstChild.textContent || div.firstChild.innerText;

或者您可以从文本节点获取文本:

var word = div.firstChild.childNodes[0].nodeValue;
于 2013-09-01T17:49:13.533 回答
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());
});
于 2013-09-01T17:53:33.787 回答
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))

或者

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))
于 2013-09-01T18:02:06.603 回答