Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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_Node.js - Fatal编程技术网

Javascript 将程序的输出流转换为数组

Javascript 将程序的输出流转换为数组,javascript,node.js,Javascript,Node.js,我有一个程序的输出流,其中包含可用打印机的列表,我想将其转换为数组 这是我的标准: OneNote Microsoft XPS文档编写器 Microsoft打印到PDF 传真 我正在寻找一个解决方案,它将给我: ['OneNote', 'Microsoft XPS Document Writer', 'Microsoft Print to PDF', 'Fax'] 我尝试了stdout.split('\n'),但它变了 [ 'OneNote

我有一个程序的输出流,其中包含可用打印机的列表,我想将其转换为数组

这是我的标准:


OneNote
Microsoft XPS文档编写器
Microsoft打印到PDF
传真
我正在寻找一个解决方案,它将给我:

['OneNote', 'Microsoft XPS Document Writer', 'Microsoft Print to PDF', 'Fax']
我尝试了
stdout.split('\n')
,但它变了

[
 'OneNote                        \r\r', 
 'Microsoft XPS Document Writer  \r\r', 
 'Microsoft Print to PDF         \r\r', 
 'Fax                            \r\r',
 '\r\r',
 ''
]
然后我尝试了
stdout.split('\r\r\n')
,它变成了

[
 'OneNote                        ', 
 'Microsoft XPS Document Writer  ', 
 'Microsoft Print to PDF         ', 
 'Fax                            ',
 '',
 ''
]
现在我可以从字符串
stdout.split('\r\n').map(printer=>printer.trim())
的末尾删除空白,但我仍然需要过滤掉最后两个空字符串,所以我想知道有没有更好/优雅的方法来解决这个问题

stdout.split('\r\r\n')
  .map(printer => printer.trim())
  .filter(printer => Boolean(printer.length))

可以使用正则表达式-

input.trim().split(/\s*[\r\n]+\s*/)
请在下面的完整程序中查看它的工作情况-

const输入=
`
OneNote
Microsoft XPS文档编写器
Microsoft打印到PDF
传真
`
常量输出=
input.trim().split(/\s*[\r\n]+\s*/)
console.log(输出)
// [
//“OneNote”,
//“Microsoft XPS文档编写器”,
//“Microsoft打印到PDF”,
//“传真”
//]
trim()
在拆分字符串之前先删除它