我試圖將字符串分割成線的陣列,但它是不工作的句子,這是我到目前爲止已經試過 -字符串分割到在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"]