如何从字符串中检索单词

时间:2013-09-01 17:47:15

标签: javascript

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

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

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

3 个答案:

答案 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))