javascript - 如何在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
})
})
解决方案
简单地使用 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
,并假设这与文件路径有关,您可以使用模块的basename
功能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']
})
推荐阅读
- c# - 为什么删除后表头不为空?
- laravel - 我可以在 Laravel 刀片的 @unless 中使用 @else/@elseif 吗?
- session - 检查 SESSION 是否仍处于活动状态后,如何重定向我的 FLASK 应用程序?
- angular - 如果 id 已知,Angular i18n 动态翻译
- php - laravel,如何仅对最近的记录使用“whereHas”
- javascript - 如何发送带有文件和json的请求帖子?
- ios - 无法将单元格转换为自定义单元格
- scala - 您如何在 sbt 存储库文件中发表评论?
- powershell - PowerShell 编译为 .exe
- xml - 如何相应地调整图像和适当的 xml 文件的大小?