Javascript中html元素的拆分
我有一组字符串,通常看起来像这样:Javascript中html元素的拆分,javascript,html,Javascript,Html,我有一组字符串,通常看起来像这样: ['string 1', 'string 2', 'string 3'] string 1字符串2字符串3 string 1字符串2字符串3 字符串1字符串2字符串3 我需要将文本(元素内部和外部/元素之间,如上所示)提取到如下数组中: ['string 1', 'string 2', 'string 3'] 有没有一种方法可以在纯Javascript中实现这一点 我试过这样的方法: ['string 1', 'string 2', 'string
['string 1', 'string 2', 'string 3']
string 1字符串2
字符串3
string 1字符串2
字符串3
字符串1
字符串2
字符串3
我需要将文本(元素内部和外部/元素之间,如上所示)提取到如下数组中:
['string 1', 'string 2', 'string 3']
有没有一种方法可以在纯Javascript中实现这一点
我试过这样的方法:
['string 1', 'string 2', 'string 3']
console.log(text.split(/(.*)
/g))
但它只适用于第一个:
['string1','string2','string3']
当它在最后两个变体上失败时:
['string1','string2
string3',']
[“”,“字符串1
字符串2
字符串3',“”]
纯JavaScript方法通常比正则表达式更好地解析HTML。您可以创建一个模板
元素,将HTML加载到其中,然后使用数组。过滤器
获取所有属于文本节点的子节点,最后返回它们的文本内容
:
const html=[
'字符串1字符串2
字符串3',
“字符串1字符串2
字符串3
”,
'字符串1
字符串2
字符串3
'
]
const getTextContent=(html)=>{
让tmp=document.createElement('template');
tmp.innerHTML=html;
const textNodes=[].filter.call(tmp.content.childNodes,n=>n.nodeType=Node.TEXT\u Node);
返回textNodes.map(o=>o.textContent);
}
forEach(h=>console.log(getTextContent(h))代码>这可能不是最好的解决方案,但我用以下代码尝试了您的树示例:
let regex = /(<([^>]+)>)/ig;
let myArray = myString.replace(regex, "-").split("-");
let regex=/(]+>)/ig;
让myArray=myString.replace(regex,“-”).split(“-”);
你可能想用其他的东西来改变这个字符,当然你也需要过滤你的数组来移除空元素,但是它工作
我会尝试用<代码>进行鬼鬼祟祟的匹配。(/(^ ^))有很多好的方法,包括正则表达式。但是我强烈鼓励你考虑jQuery。这不一定是一直以来最好的方法。IMHO…@ASDFGerte谢谢,我会使用这种方法。目前它似乎对我的情况很有效。如果你愿意,最好能给出一个完整的答案,详细说明它是如何工作的。@paulsm4我需要在Anki中使用它,因为Anki首先对Javascript没有很好的支持,所以我想保留它最小。另外,我不希望我的卡片太重。这是滥用事实,文本总是介于
(或字符串开始)和