是否可以在JavaScript中解析字符串,以便如果文本块由2个<br />
标记而不是段落分隔符分隔,则每个文本块都包含在打开和关闭<p>
标记中?这是一个示例文本:
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero. Sed dignissim lacinia nunc.
<br />
<br />
Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula lacinia aliquet. Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
期望的结果将是:
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. </p>
<p>Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula lacinia aliquet. Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p>
谢谢。
更新:如果文字已有<p>
个标签,则不应将其包含在额外标签中。
答案 0 :(得分:3)
根据@ Radonirina的回答。
var string = "your string........";
var result = "<p>";
result += string.replace(/<[br][^>]\s*\/?>/ig, '</p><p>');
result += "</p>";
var string = "string ... ";
var stringArr = string.split('<br />');
var para = '<p>';
para += stringArr.join('</p><p>');
para += '</p>';
使用此函数从方法2中的数组中删除空白元素。
Array.prototype.clean = function(deleteValue) {
for (var i = 0; i < this.length; i++) {
if (this[i] == deleteValue) {
this.splice(i, 1);
i--;
}
}
return this;
};
test = new Array("","One","Two","", "Three","","Four").clean("");
test2 = [1,2,,3,,3,,,,,,4,,4,,5,,6,,,,];
test2.clean(undefined);
var string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. <br /><br />Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula lacinia aliquet. Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. ";
var stringArr = string.split('<br />');
Array.prototype.clean = function(deleteValue) {
for (var i = 0; i < this.length; i++) {
if (this[i] == deleteValue) {
this.splice(i, 1);
i--;
}
}
return this;
};
stringArr.clean('');
var para = '<p>';
para += stringArr.join('</p><p>');
para += '</p>';
答案 1 :(得分:1)
您可以使用此正则表达式:/<[br][^>]\s*\/?>/g
答案 2 :(得分:1)
在某些情况下使用正则表达式,例如&lt; br&gt; &LT; br&gt; &LT峰; br /&GT; &lt; br /&gt;。
var text = .....
text = '<p>' + text + '</p>';
text = text.replace('<br />', '</p><p>');//this will replace br tag only once. Use regex with 'g' modificator.
答案 3 :(得分:1)
在这里,这正是你想要的。它会考虑<br/>
标记之间可能的空白字符,如果存在超过2个<br />
标记,则可以使用,并适用于多种标记格式,包括<br>
,<br/>
,{ {1}}和<br >
<强> HTML 强>
<br />
<强> JS 强>
$(function () {
$("body").html(
$("body").html().replace(/((<br\ ?\/?>)(\s*)?){2}/igm, "</p><p>")
);
});
在这里,我为您提供了一个jsfiddle,以防上述代码段为您提供问题:http://jsfiddle.net/ctwheels/wf1uL9y7/