![](/img/trans.png)
[英]JavaScript / jQuery - Keep anchor tags in sliced paragraph text content
[英]Remove anchor tags from a paragraph but keep the text using Javascript
我正在以这种形式从后端 api 获取文本:
const serverText = "This is a <a href="http://www.link1">link</a> and so is <a href="http://www.link1">this</a>. This is also another <a href="http://www.link2">boring link</a>.";
我想把它变成这种形式:
const formatted = "This is a link and so is this. This is also another boring link.";
我用正则表达式解决了这个问题,但我不确定这是否是可行的方法,因为它只是输出一组找到的单词。
在不使用任何额外的 DOM 工具的情况下,有没有更简单的方法来使用 vanilla Javascript 来做到这一点?
尝试这个:
var yourHtml= `This is a <a href="http://www.link1">link</a> and so is <a href="http://www.link1">this</a>. This is also another <a href="http://www.link2">boring link</a>.`;
var parser = new DOMParser();
var htmlDoc = parser.parseFromString(yourHtml, 'text/html');
var text = htmlDoc.body.innerText;
console.log(text); // Returns: "This is a link and so is this. This is also another boring link."
这会将您的 HTML 字符串转换为 DOM,并使用.innerText
从您的字符串中删除所有 html 元素 - 只留下文本。
创建了这个返回文本的简单函数,并且只需要 HTML 字符串:
function textFromHTML(str) {
var parser = new DOMParser();
var htmlDoc = parser.parseFromString(str, 'text/html');
return htmlDoc.body.innerText;
}
/* --- Usage --- */
var yourHtml= `This is a <a href="http://www.link1">link</a> and so is <a href="http://www.link1">this</a>. This is also another <a href="http://www.link2">boring link</a>.`;
var text = textFromHTML(yourHtml);
console.log(text); // Returns text
最终版本,但使用 RegExp 而不是DOMParser()
:
function textFromHTML(str) {
return str.replace(new RegExp("<.*?>", "g"), "");
}
/* --- Usage --- */
var text = textFromHTML("Hello <span>World!</span> This string is HTML!");
console.log(text); // Returns: "Hello World! This string is HTML!"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.