为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕哥9229398 2021-06-22 17:01:50
我有一个包含可用打印机列表的程序的输出流,我想将其转换为数组。这是我的标准输出:OneNote                        Microsoft XPS Document Writer  Microsoft Print to PDF         Fax                            我正在寻找一种解决方案,它会给我:['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\r\n').map(printer => printer.trim())但我仍然需要过滤掉最后两个空字符串,所以我想知道有没有更好/优雅的方法来解决这个问题?stdout.split('\r\r\n')  .map(printer => printer.trim())  .filter(printer => Boolean(printer.length))
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

您可以使用正则表达式 -


input.trim().split(/\s*[\r\n]+\s*/)

看看它在下面这个完整的程序中工作 -


const input = 

`

OneNote                        


Microsoft XPS Document Writer  


Microsoft Print to PDF         


Fax                            

`


const output =

  input.trim().split(/\s*[\r\n]+\s*/)

  

console.log(output)

// [

//   "OneNote",

//   "Microsoft XPS Document Writer",

//   "Microsoft Print to PDF",

//   "Fax"

// ]

正则表达式针对由可选空格包围的任何回车\r和/或换行符\n。可以理解为——

  • \s* - 零个或多个空格,后跟

  • [\r\n]+- 一个或多个\ror \n,然后是

  • \s* - 零个或多个空格


查看完整回答
反对 回复 2021-06-24
  • 1 回答
  • 0 关注
  • 210 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信