为什么要将此p标记添加为新行
Why is this p tag being added as a new line?
以下代码拆分data
,应用正则表达式,然后再次连接字符串(有一部分删除单词之间的新行,因为我希望段落在单个块/行中输出):
输入:
Lorem ipsum悲哀坐amet
Ipsum dolor sit amet,consetetur eirmod tempor invdunt ut labore
代码:
data = data.split(''n'n')
for (var i = 0; i < data.length; ++i) {
data[i] = '<p>' + data[i].replace(/'n(?='w+)/g, ' ') + '</p>'
}
data = data.join(''n'n')
我以为输入是:
<p>Lorem ipsum dolor sit amet</p>
<p>Ipsum dolor sit amet, consetetur eirmod tempor invidunt ut labore</p>
但不是,而是:
<p>Lorem ipsum dolor sit amet</p>
<p>Ipsum dolor sit amet, consetetur eirmod tempor invidunt ut labore
</p>
原因可能是什么?
我认为您的原始字符串中有一个尾随的换行符,但您可以通过一点更改来解决这个问题。与其检查换行后是否有单词字符,不如检查后是否没有空白字符
var data = "Lorem ipsum dolor sit amet'n"
+ "'n"
+ "Ipsum dolor sit amet, consetetur'n"
+ "eirmod tempor invidunt ut labore'n";
var data = data.split(''n'n');
for (var i = 0; i < data.length; ++i) {
data[i] = '<p>' + data[i].replace(/'n(?!'s)/g, '') + '</p>'
}
data = data.join(''n'n');
console.log(data);
如果您的输出在关闭</p>
标记之前显示了一条换行符,那么您的真实世界输入必须在末尾包含一条换行。以下代码对我来说很好:
/* note that you cannot declare a multiline string in javascript
like you did. I'm using `Array.join()` to create the example data */
data = [
"Lorem ipsum dolor sit amet",
"",
"Ipsum dolor sit amet, consetetur",
"eirmod tempor invidunt ut labore"
].join("'n");
data = data.split(''n'n')
for (var i = 0; i < data.length; ++i) {
data[i] = '<p>' + data[i].replace(/'n(?='w+)/g, ' ') + '</p>'
}
data = data.join(''n'n')
相关文章:
- 如何在脚本上添加新行
- 在不刷新整个网格的情况下,向Asp.net网格视图添加新行
- dhtmlx添加新行并启动单元格编辑器
- 如何在Google Geochart图表的工具提示文本中添加新行
- 如何在javascript中每次添加新行时都增加ordre值
- 两个表添加新行按钮-冲突
- 在Spring.message属性中添加新行时出错
- 使用Javascript在文本区域中添加新行
- 在java脚本的第一行之前添加新行
- sails.js更新或添加新行
- 使用ajax向表中添加新行
- 使用一些默认值在剑道网格中添加新行
- 添加新行后无法“刷新”灯丝组表锯响应表
- JQuery 数据表添加新行,如果该行已经存在,请将其删除并为该 ID 插入新行
- 续集 - 向表添加新行并关联表
- 如何在 jQuery 函数 text() 中添加新行
- 在表格顶部添加新行
- 添加新行动态引导日期时间选择器不起作用
- 如何在不影响 Jquery 数据表中其他行的情况下删除选定的现有数据并添加新行
- 分机.js确认方法添加新行字符