如何在Node.js中提取部分字符串和字符串数组?
Posted
技术标签:
【中文标题】如何在Node.js中提取部分字符串和字符串数组?【英文标题】:How to extract part of string an array of strings in Node.js? 【发布时间】:2020-02-05 07:32:30 【问题描述】:我正在尝试为数组中的每个元素提取字符串的一部分。
我已设法获取所有以 .pdf 结尾的文件,但我不知道如何进行提取部分。
我会假设我需要使用正则表达式来完成这项工作,但是,我不确定从哪里开始。
给定第一个元素./pdf/main/test1.pdf
,我想返回/test1.pdf
。
按照我下面的代码:
glob('./pdf/main/*.pdf', , (err, files) =>
console.log(files) // ['./pdf/main/test1.pdf','./pdf/main/test2.pdf' ]
files.map(f =>
// Here I want to extract and return the following output:
// /test1.pdf
// /test2.pdf
)
)
【问题讨论】:
【参考方案1】:字符串拆分和使用path.basename可能很容易理解。
如果您想知道如何使用正则表达式提取文件名,您可以尝试以下代码
glob('./pdf/main/*.pdf', , (err, files) =>
files.map(f => f.match(/.*(?<filename>\/.+?\.pdf)/).groups.filename)
【讨论】:
【参考方案2】:使用 split 并检索最后一个值应该可以做到这一点
glob('./pdf/main/*.pdf', , (err, files) =>
console.log(files) // ['./pdf/main/test1.pdf','./pdf/main/test2.pdf' ]
files.map(f =>
let split = f.split('/'); // ['.', 'pdf', 'main', 'test1.pdf']
return `/$split[split.length - 1]`; // /test1.pdf
)
)
此外,由于您已标记 node.js
,并假设这与文件路径有关,您可以使用 path
模块的 basename
函数来执行此操作,请参见此处
nodejs get file name from absolute path?
glob('./pdf/main/*.pdf', , (err, files) =>
console.log(files) // ['./pdf/main/test1.pdf','./pdf/main/test2.pdf' ]
files.map(f => `/$path.basename(f)`); // ['/test1.pdf', '/test2.pdf']
)
【讨论】:
以上是关于如何在Node.js中提取部分字符串和字符串数组?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查字符串是不是与 node.js 中的任何正则表达式数组匹配?
如何在 Node.js 中使用 mongoose 将大数组保存到 MongoDB
将rowdatapacket转换为数组,如何将mysql node.js api rowdatapacket转换为数组,将字符串转换为数组