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

Splitting a string with JavaScript but ignoring the HTML characters in it

本文关键字:HTML 字符 拆分 JavaScript 字符串 使用      更新时间:2023-09-26

我对这个问题已经有一段时间了,我希望有一个解决方案。。

我有一些类似的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"文本仍然链接:

Lorem ipsum dolor si

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

<a href="link.com">L

它只是呈现为超链接L:

L

有人给我什么建议吗?我试着搜索,但找不到合适的答案。

如果有帮助的话,我可以在JS中使用原始的非HTML文本和完整的HTML文本(带链接)。我不想只使用原始文本,因为它不会呈现任何链接。例如,如果我将文本拆分为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'

希望这是有道理的。对造成的混乱深表歉意。

您可以这样使用它:

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.用空格分隔原始字符串2.获取吐出的的第一个(移位)或最后一个(弹出)

var longString="Lorem ipsum dolor sit amet";

shortString=longString.split(").shift();-->//Lorem