5

我有这个字符串:

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)

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

这怎么可能?

4

3 回答 3

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.

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

于 2013-09-13T07:23:28.593 回答
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>
于 2013-07-27T08:03:54.430 回答
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 标记。

于 2013-07-21T20:46:30.197 回答