我试图将一个字符串拆分成一个行数组,但它不起作用,这是我迄今为止所尝试过的 -
value = '<p>line1</p><p>line2</p><p>line3</p>';
var lines = value.split('/<p>|<\/p>/');
console.log(lines.length);
//expecting 3 but output is 1
答案 0 :(得分:1)
你做错了。以这种方式使用它:
value = '<p>line1</p><p>line2</p><p>line3</p>';
var lines = value.split('</p><p>');
console.log(lines.length);
&#13;
此外,要删除第一个和最后一个<p>
和</p>
,请使用您拥有的RegEx。对于那些要求:
value = '<p>line1</p><p>line2</p><p>line3</p>';
value = value.replace(/^<p>|<\/p>$/g, "");
var lines = value.split('</p><p>');
console.log(lines.length);
console.log(lines);
&#13;
答案 1 :(得分:0)
你可以用正则表达式做到这一点。
value = '<p>line1</p><p>line2</p><p>line3</p>';
var v = value.replace(new RegExp("<p>(.*?)<\/p>", "g"), '$1\n');
var lines = v.split("\n");
lines.splice(-1);
console.log(lines);
https://jsfiddle.net/goe14nkf/
这会正确返回您的行:["line1", "line2", "line3"]
答案 2 :(得分:0)
另一种方法可能是使用本机选择器(此实现适用于IE9 +)
我们的想法是将dom字符串保存在实际的html文档正文中,并使用querySelectorAll
获取段落,将NodeList
转换为Array
({返回的类型} {1}})。然后使用高阶函数Array.prototype.map
来构建所需的行数。
这可能看起来有些过分,但如果你的某些段落碰巧有额外的属性,那就很有用了。
querySelectorAll