使用JavaScript拆分字符串但忽略其中的HTML字符

时间:2014-10-09 17:18:58

标签: javascript html regex string substring

我现在已经在这个问题上摸不着头脑了,我希望那里有一个解决方案......

我有一些类似的HTML字符串:

'<a href="link.com">Lorem ipsum</a> dolor sit amet, consectetur adipiscing elit. Ut lobortis luctus leo, non porta nisi euismod ut. <a href="anotherlink.com">Nulla tristique</a> scelerisque fringilla.'

我需要使用JavaScript在一定数量的字符后截断/拆分文本,不计算链接中的HTML,但仍然在结果文本中呈现链接。例如,如果我将其截断为20个字符,那么我希望显示以下内容,但是要使用“Lorem ipsum”&#39;文字仍然链接:

Lorem ipsum dolor si

如果我只使用 str.substring(0,20),那么字符串中的HTML字符也会显示,所以我得到:

<a href="link.com">L

只是呈现为超链接L:

L

有人对我有什么建议吗?我尝试进行搜索,但无法找到合适的答案。

如果有帮助的话,我可以使用原始的非HTML文本和完整的HTML文本(带链接),我可以在JS中使用它。我不想只使用原始文本,因为它不会呈现任何链接。例如,如果我将文本拆分为200个字符,那么我希望所有链接仍然在HTML中呈现,但是只有200个字符的实际屏幕文本要显示给用户。

希望这是有道理的。非常感谢您的任何帮助!

约翰

编辑:澄清我想要完成的事情;

我有一个帖子(文字字符串),里面有链接。我想计算链接中HTML字符排除文字的字符。然后我想截断文本仍然包含 HTML链接,但只向用户显示X个字符。

例如;

'<a href="link.com">Lorem ipsum</a> dolor sit amet, consectetur adipiscing elit. Ut lobortis luctus leo, non porta nisi euismod ut. <a href="anotherlink.com">Nulla tristique</a> scelerisque fringilla.'

截断为40个字符时将显示为:

'<a href="link.com">Lorem ipsum</a> dolor sit amet, consectetur adi'

因此它包含链接,但只向用户显示40个字符的文本。如果我使用str.substring(0,40),那么它包含字符数中的链接并最终显示:

'<a href="link.com">Lorem ipsum</a> dolo'

希望这是有道理的。为混乱道歉。

2 个答案:

答案 0 :(得分:2)

你可以像这样使用它:

var s = '<a href="link.com">Lorem ipsum</a> dolor sit amet, consectetur adipiscing elit. Ut lobortis luctus leo, non porta nisi euismod ut. <a href="anotherlink.com">Nulla tristique</a> scelerisque fringilla.'

var div = document.createElement("div");
div.innerHTML = s;
var text = div.textContent || div.innerText;

var substr = text.substring(0, 20);
//=> "Lorem ipsum dolor si"

答案 1 :(得分:1)

如果您的字符串结构与您所显示的一致;那么,这可能会奏效:

1.用空格分割原始字符串 2.获取吐痰的第一个(移位)或最后一个(弹出)

  

var longString =“Lorem ipsum dolor sit amet”;

     

shortString = longString.split(“”)。shift(); - &GT; //的Lorem