我对我的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个元素吗?非常感谢!
答案 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"]
清理过程如下:
\r
替换为\n
,这会在某些地方留下多个\n
\n
的多个实例\n
以避免结尾处的空数组元素\n
答案 1 :(得分:1)
你的问题隐含两个假设。首先,我假设换行符可以由'\r\n'
,'\n'
或'\r'
表示。其次,您希望忽略结果中的空行。
我认为你可以通过首先将所有换行符转换为单个表单,然后在忽略空行的情况下进行拆分来实现这两点:
contents.replace(/(\r\n)|\r|\n/g, '\n').split(/\n+/g)
replace命令应该将所有不同的换行符转换为'\n'
,而拆分会将行分割为1个或更多个连续的'\n'
s。