我有以下函数,它应该从输入字符串中删除标记。
示例:
'<strong>hello <em>my name <strong>is</strong> </em></strong>'
结果:
'hello my name is'
目前我有这段代码,但不知道如何使它适用于递归。
const clean= (str) => {
const tags = ['<strong>', '</strong>', '<em>', '</em>', '<del>', '</del>']
let strSanited = ''
tags.forEach(tag => {
if (str.includes(tag)) {
strSanited = str.replace(tag, '')
}else{
// recursion here??
}
})
}
clean('<strong>hello <em>my name <strong>is</strong> </em></strong>')
答案 0 :(得分:3)
此外,您可以使用正则表达式来执行此操作。
EX。
yourstring.replace(/<(?:.|\n)*?>/gm, '');
参考:Strip HTML from Text JavaScript
这样你就不必担心其他的html标签了,它会处理所有的html标签。让我们知道它是否有帮助
答案 1 :(得分:2)
为什么不简单地使用createElement
和innerText
var div = document.createElement( "div" );
div.innerHTML = '<strong>hello <em>my name is </em></strong>';
console.log(div.innerText); //hello my name is
<强>演示强>
var div = document.createElement("div");
div.innerHTML = '<strong>hello <em>my name is </em></strong>';
console.log(div.innerText); //hello my name is