2013-07-21 15 views
5

Ich habe diese Saite:JS: Extrahieren von Text aus einem String ohne jQuery

var string = '<article><img alt="Ice-cream" src=http://placehold.it/300x300g"><div style="float: right; width: 50px;"><p>Lorem Ipsum </p></div></article>'; 

und ich versuche, den Text aus der es als solches zu extrahieren:

var $str = $(string).text(); 
console.log($str) 

aber da ich bin besorgt über die Leistung aufgrund einer großen Menge von Strings mit großem Text, würde ich nativ gehen wollen.

Wie ist das möglich?

Antwort

3

der Browser Lassen Sie die Hygiene tun und benutzen Sie diesen Trick:

var str= '<article><img alt="Ice-cream" src=http://placehold.it/300x300g">'+ 
'<divstyle="float: right; width: 50px;"><p>Lorem Ipsum </p></div></article>'; 

var dummyNode = document.createElement('div'), 
    resultText = ''; 

dummyNode.innerHTML = str; 
resultText = dummyNode.innerText || dummyNode.textContent; 

Dies schafft ein Dummy-DOM-Element und setzt seinen HTML-Inhalt an die Eingabekette.
Nun kann der einzige Text durch einfaches Aufrufen der DOM-Eigenschaft innerText oder textContent abgerufen werden.

Dies ist auch sicherer und robuster als Browser hat bereits bessere Algorithmen geschrieben, um diese Werte zu erhalten.

0

Sie können regex verwenden, um Text aus einer Zeichenfolge zu erhalten, die HTML Tags enthält.

<script type="text/javascript"> 

    var regex = "/<(.|\n)*?>/"; 
    var string = '<article><img alt="Ice-cream" src=http://placehold.it/300x300g"><div style="float: right; width: 50px;"><p>Lorem Ipsum </p></div></article>'; 
    var result = string .replace(regex, ""); 
    alert(result); // result should be "Lorem Ipsum " 

</script> 

Auf diese Weise entfernen Sie alle HTML-Tags mit einer leeren Zeichenfolge.

3

Sie müssen globale Suche durchführen, um beliebige Zeichen zu finden, nein. die Zeit zwischen < und >

<script type="text/javascript"> 

var str='<article><img alt="Ice-cream" src=http://placehold.it/300x300g"><div style="float: right; width: 50px;"><p>Lorem Ipsum </p></div></article>'; 
var patt=/\<.*?\>/g; 

var result = str.replace(patt, ""); 
console.log(result); 

</script>