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);