JS:从没有jQuery的字符串中提取文本

时间:2013-07-21 20:40:15

标签: javascript html string text

我有这个字符串:

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 $str = $(string).text();
console.log($str)

但是因为我担心由于大量文字的大量字符串而导致的性能,所以我想要本地化。

这怎么可能?

3 个答案:

答案 0 :(得分:4)

让浏览器进行卫生并使用这个技巧:

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;

这会创建一个虚拟DOM元素,并将其HTML内容设置为输入字符串 现在,只需调用DOM属性innerTexttextContent即可获得唯一的文本。

这也更安全,更健壮,因为浏览器已经编写了更好的算法来获取这些值。

答案 1 :(得分:3)

你必须进行全局搜索以找到任何没有的任何字符。 <>之间的时间

<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>

答案 2 :(得分:0)

您可以使用regex从包含HTML标记的字符串中获取文字。

<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>

这样您就可以使用空字符串去除所有HTML标记。