Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将字符串格式化为数组_Javascript_Arrays_String - Fatal编程技术网

Javascript 将字符串格式化为数组

Javascript 将字符串格式化为数组,javascript,arrays,string,Javascript,Arrays,String,我有这个字符串: var comments = "2020-01-15 15:06:53 - Rafael Souza (Comentários adicionais)\nTESTE: Comentários adicionais.\n\n2020-01-15 14:47:39 - Rafael Souza (Comentários adicionais)\nChecado problema no servidor.\n\n"; console.log(comments); 我想格式化为数组

我有这个字符串:

var comments = "2020-01-15 15:06:53 - Rafael Souza (Comentários adicionais)\nTESTE: Comentários adicionais.\n\n2020-01-15 14:47:39 - Rafael Souza (Comentários adicionais)\nChecado problema no servidor.\n\n";

console.log(comments);
我想格式化为数组,如下所示: 此数组的长度可以增加或减少

['2020-01-15 15:06:53 - Rafael Souza (Comentários adicionais) TESTE: Comentários adicionais.', '2020-01-15 14:47:39 - Rafael Souza (Comentários adicionais) Checado problema no servidor.']
我尝试了这个命令,但没有达到预期的效果

console.log(comments.split('\n'));

看起来您真正想要的是在双线分隔符处拆分,然后从每个条目中删除单线分隔符

comments.split('\n\n').map(comment => comment.replace(/\n/g, ' ')).filter(comment => comment);

看起来您真正想要的是在双线分隔符处拆分,然后从每个条目中删除单线分隔符

comments.split('\n\n').map(comment => comment.replace(/\n/g, ' ')).filter(comment => comment);

对空格字符序列和非空格字符序列进行非贪婪匹配,
[\S\S]+?
,该序列后面有一个\n两个字符序列
(?=\n{2})
。然后将剩余的
\n
替换为空格

var comments=“2020-01-15 15:06:53-Rafael Souza(Comentários adicionais)\n测试:Comentários adicionais。\n\n2020-01-15 14:47:39-Rafael Souza(Comentários adicionais)\n卡多问题没有服务商。\n\n”;
var result=comments.match(/[\S\S]+?(?=\n{2})/g)
.map(str=>str.replace(/\n/g'))

console.log(result)
对空格字符序列和非空格字符序列进行非贪婪匹配
[\S\S]+?
,该序列后面有两个\n序列
(?=\n{2})
。然后将剩余的
\n
替换为空格

var comments=“2020-01-15 15:06:53-Rafael Souza(Comentários adicionais)\n测试:Comentários adicionais。\n\n2020-01-15 14:47:39-Rafael Souza(Comentários adicionais)\n卡多问题没有服务商。\n\n”;
var result=comments.match(/[\S\S]+?(?=\n{2})/g)
.map(str=>str.replace(/\n/g'))
console.log(结果)
Mind performance:
.split()
接受正则表达式:

使用
comments.split(/[\n]{2}[^$]/)

这相当于
comments.split(/\n\n[^$]/)

它将使用
\n\n\
作为模式拆分字符串,除非
$
(行尾)紧跟其后

只是一条信息:

如果分隔符出现在字符串的开头或结尾处,或两者都出现,则数组将分别以空字符串开始、结束或同时开始和结束

来源:

心智表现:
.split()
接受正则表达式:

使用
comments.split(/[\n]{2}[^$]/)

这相当于
comments.split(/\n\n[^$]/)

它将使用
\n\n\
作为模式拆分字符串,除非
$
(行尾)紧跟其后

只是一条信息:

如果分隔符出现在字符串的开头或结尾处,或两者都出现,则数组将分别以空字符串开始、结束或同时开始和结束


来源:

吹毛求疵:换行符应替换为空格,而不是完全删除。数组中仍有一个空键。使用
filter
从数组中删除该键。@EmielZuurbier是的,我在输入中没有看到结尾
\n\n
。刚刚添加了一个快速的从数组中删除空字符串的速记:)映射太疯狂了。@AlexandreLage映射很有用FTFY:DNit pick:换行符应该用空格代替,而不是完全删除。数组中仍然会有一个空键。使用
filter
从数组中删除该键。@EmielZuurbier是的,我在输入中没有看到结尾
\n\n
。刚刚添加了一个快速的简写,用于从数组中删除空字符串:)映射太疯狂了。@AlexandreLage映射非常有用
comments.split('\n\n').map(comment => comment.replace(/\n/g, ' ')).filter(comment => comment);