从字符串中替换所有出现的html标记和特殊的unicode字符

时间:2016-03-01 03:35:00

标签: javascript angularjs

我有一些这样的文字

Keeping up with friends is faster than ever.<p>&#x2022; See what friends are up to<br>&#x2022; Share updates, photos and videos<br>&#x2022;

我想要这样的文字

Keeping up with friends is faster than ever.
 • See what friends are up to
 • Share updates, photos and videos

我通过str.replace(/<[^>]+>/gm, '')清除了html标签,但我无法删除特殊符号。

我正在计算字符串的长度,所以在浏览器编译之前特殊字符给了我不同的长度。

由于

3 个答案:

答案 0 :(得分:0)

在这种情况下,最好使用外部库(如jQuery)来帮助你。

在下面的示例中,我使用了名为text()的jQuery函数。这是文档:http://api.jquery.com/text/

顾名思义,jQuery文本函数将HTML作为文本读取。

&#13;
&#13;
var asText = $("#example").text();
$("#asText").text(asText);
$("#asTextLength").text(asText.length);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p id="example">&#x2022; Ex<em>ample</em> &amp; <span>T<strong>est</strong></span></p>
<p id="asText"></p>
<p id="asTextLength"></p>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

唯一的#34;权利&#34; (完成)这样做的方法是将文档解析为HTML DOM,然后创建一些将读取DOM的内容并将其格式化为您的定义&#34; simple&#34;。

除了Javascript之外,还有很多工具可以做到这一点,之前的StackOverflow交流讨论了其中的一些:

我认为&#34;滚动你自己&#34;在Javascript中会很痛苦,除非你设置了一个非常低的标准,并且只是努力做到&#34;漂白&#34; HTML数量非常有限。

话虽如此,为什么你不能继续使用你所拥有的一个工具,并继续投入规则&#34;处理你想要处理的事情?

str.replace(/&#x2022;/gm, '•')
<等>等等,yada yada yada, ad nauseum ...

答案 2 :(得分:0)

您可以使用ng-bind-html,例如

<p ng-bind-html="myHTML"></p>

$scope.myHTML = 'Keeping up with friends is faster than ever.<p>&#x2022; See what friends are up to<br>&#x2022; Share updates, photos and videos<br>&#x2022;';