2013-09-01 5 views
0
str = <a href = "#homecoupon" class ="current">COUPONS</a> 

str에서 단어 COUPONS을 얻는 방법. #homecoupon이라는 단어가 다른 단어로 바뀔 수 있으므로 n 번째 위치 값을 검색하는 하위 문자열 메소드를 수행 할 수 없습니다. class ="current">COUPONS</a>은 항상 수정됩니다.문자열에서 단어를 검색하는 방법

이 내가 트랙을 백업하고 마지막 n 번째 단어를 검색 할 수있는 방법입니다.

+0

당신은 웹 사이트를 긁어 나 웹 사이트의이 부분입니까? – nico

+0

두 답변이 모두 도움이 될 것입니다. 그 줄을 작은 따옴표로 묶고 마지막에 광고 세미콜론을 추가하십시오. 그렇지 않으면 지옥에 유효한 구문이 될 방법이 없습니다. – amenadiel

답변

5

브라우저에서 HTML을 구문 분석하는 가장 좋은 방법은 브라우저가 당신을 위해 그것을 할 수 있도록하는 것입니다.

메모리에 더미 요소를 만든 다음 innerHTML을 문자열로 설정하십시오. 당신은 그 앵커 요소의 텍스트 찾기 위해 정규 DOM API를 사용할 수 있습니다 : 당신은 여전히 ​​IE < 9를 지원해야하는 경우 http://jsfiddle.net/mREFu/


것은, 당신이해야합니다 : 여기

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

은 바이올린의

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

을 아니면 텍스트 노드에서 텍스트를 얻을 수 있습니다 :이 사용하는

var word = div.firstChild.childNodes[0].nodeValue; 
+2

+1하지만 실제로 작동하는 이유에 대한 설명을 추가해야합니다. – nico

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()); 
}); 
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)) 
관련 문제