如何在javascript中拆分断行?

时间:2014-06-09 21:14:45

标签: javascript regex split

我对我的javascript有疑问。

我从我的数据库中检索到了这样的东西:

lots of texts in line 1 
lots of texts in line 2
lots of texts in line 3 
lots of texts in line 4

我想创建一个数组并根据breakline创建元素。

我有类似

的东西
var contents = obj.string //obj.string contains the contents above.
contents = contents.split(/(\r\n|\r|\n)/g)

它创建了超过4个元素,因为有些元素只是一个' breakline'。

任何人都可以帮助我获得4个元素吗?非常感谢!

2 个答案:

答案 0 :(得分:2)

这可能不是一个优雅的解决方案,但您可以通过用\r替换任何\n来清理字符串,然后修剪掉最后一个\n(这将为您提供一个空数组你不需要)。

参见示例:

var a = "a\nb\rc\n\n\n\n",
    b = a.replace(/\r/g,"\n").replace(/[\n]+/g,"\n").replace(/\n$/,"").split("\n");

var a的输出:

"a
 bc



 "

var b的输出:

["a", "b", "c"]

清理过程如下:

  1. 使用字符串并将所有\r替换为\n,这会在某些地方留下多个\n
  2. 清除\n的多个实例
  3. 删除所有尾随\n以避免结尾处的空数组元素
  4. \n
  5. 上拆分为数组

答案 1 :(得分:1)

你的问题隐含两个假设。首先,我假设换行符可以由'\r\n''\n''\r'表示。其次,您希望忽略结果中的空行。

我认为你可以通过首先将所有换行符转换为单个表单,然后在忽略空行的情况下进行拆分来实现这两点:

contents.replace(/(\r\n)|\r|\n/g, '\n').split(/\n+/g)

replace命令应该将所有不同的换行符转换为'\n',而拆分会将行分割为1个或更多个连续的'\n' s。