使用递归删除字符串的标记

时间:2017-12-06 14:56:15

标签: javascript recursion

我有以下函数,它应该从输入字符串中删除标记。

示例:

'<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>')

2 个答案:

答案 0 :(得分:3)

此外,您可以使用正则表达式来执行此操作。

EX。

 yourstring.replace(/<(?:.|\n)*?>/gm, '');

参考:Strip HTML from Text JavaScript

这样你就不必担心其他的html标签了,它会处理所有的html标签。让我们知道它是否有帮助

答案 1 :(得分:2)

为什么不简单地使用createElementinnerText

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