如何在 Node.js 中提取字符串的一部分字符串数组?



我正在尝试为数组中的每个元素提取字符串的一部分。

我已经设法让所有以.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
})
})

使用拆分和检索最后一个值应该很简单

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 从绝对路径获取文件名?

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']
})

字符串拆分和使用 path.basename 可能很容易理解。

如果您想知道如何使用正则表达式提取文件名,可以尝试以下代码

glob('./pdf/main/*.pdf', {}, (err, files) => {
files.map(f => f.match(/.*(?<filename>/.+?.pdf)/).groups.filename)
}

相关内容

  • 没有找到相关文章

最新更新