我试图将字符串分割成线的阵列,但它是不工作的句子,这是我到目前为止已经试过 -字符串分割到在JavaScript
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
我试图将字符串分割成线的阵列,但它是不工作的句子,这是我到目前为止已经试过 -字符串分割到在JavaScript
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
一种不同的方法可以使用本机选择(此实现与IE9 +工程)
的想法是把你的DOM字符串在实际的HTML文档正文中,并使用querySelectorAll
来获取段落,将NodeList
转换为Array
(由返回的类型)。然后使用高阶函数Array.prototype.map
来构建您所需的线阵列。
这似乎有点矫枉过正,但如果您的某些段落碰巧具有额外的属性,则这种功能很强大。
var sandbox = document.implementation.createHTMLDocument();
sandbox.body.innerHTML = '<p>line1</p><p>line2</p><p>line3</p>';
var paragraphs = Array.prototype.slice.call(sandbox.querySelectorAll('p'));
var lines = paragraphs.map(function (node) {
return node.innerText;
});
你正在做的它错了。使用这种方式:
value = '<p>line1</p><p>line2</p><p>line3</p>';
var lines = value.split('</p><p>');
console.log(lines.length);
而且,除去第一和最后<p>
和</p>
,使用你有正则表达式。而对于那些谁问:
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);
你可以做到这一点与正则表达式。
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"]