让我说我的字符串中有很多p标签......
var myString = "<p>Some text.</p><p>Some more. Some more text.</p><p>And even some more text.</p>";
..如何获取数组,数组中的每个项目都是p标记中的一串文本:
[
"Some text.",
"Some more. Some more text.",
"And even some more text."
]
我认为一种方法是摆脱p标签......
var stringWithOutTags = myString.replace(/(<p>|<\/p>)/g, " ");
..然后使用.split()来获取每个句子。但我真的不想把每个句子拿出来,只需要用文本标记
var stringAsArray = stringWithOutTags.split(".");
答案 0 :(得分:3)
如果您在浏览器上执行代码,则可以将字符串解析为HTML而不是使用正则表达式:
var el = document.createElement('div');
el.innerHTML = myString;
var texts = [].map.call(el.querySelectorAll('p'), function(p) {
return p.textContent;
});
答案 1 :(得分:1)
您可以省略&lt; p&gt;您的字符串中的标记并使用结束&lt; / p&gt;进行拆分标记只是为了获得所需的结果。
myString.replace('<p>', '').split('</p>');
答案 2 :(得分:1)
注意:如果您确定可以信任输入字符串(即不是用户输入),请仅使用此方法!
var myString = "<p>Some text.</p><p>Some more. Some more text.</p><p>And even some more text.</p>";
// Create a "div" element
var div = document.createElement("div");
// Get browser to parse string, and set the parsed HTML elements as
// the contents of the div element
div.innerHTML = myString;
// Loop over the child elements of the div, and return an array of
// the textual content the elements. If you wish to preserve tags
// inside the <p> elements, replace .textContent with .innerHTML
var arrayOfStrings = Array.prototype.map.call(div.childNodes, function (pTag) {
return pTag.textContent;
});
答案 3 :(得分:0)
替换后为什么不拆分:
var a = "<p>Some text.</p><p>Some more. Some more text.</p><p>And even some more text.</p>";
var b = a.replace(/(<p>|<\/p>)/g, " ").split(' ');