我有一个包含可用打印机列表的程序的输出流,我想将其转换为数组。这是我的标准输出: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]+
- 一个或多个\r
or\n
,然后是\s*
- 零个或多个空格
添加回答
举报
0/150
提交
取消