我做了一个函数来检查任何文件夹中的.mp3
文件。 我对正则表达式知之甚少。 下面是我的代码,我尝试了什么仍然接收空数组。
null
const find = require('find') ;
const path = require('path') ;
const mm = require('music-metadata') ;
async function parseMetadata(files){
let metadata ;
data = files.map(async (file) => {
metadata = await mm.parseFile(file,{duration:true}) ;
m = new metaData(metadata.common, metadata.format.duration, file) ;
return m ;
}) ;
const musicarray = await Promise.all(data) ;
return musicarray ;
}
function fetchmp3(dirs){
let res,musicfiles = [] ;
dirs.forEach((path)=>{
res = find.fileSync(/\.(mp3)/ig,path) ;
musicfiles.push(...res) ;
});
if (musicfiles.length === 0){
return parseMetadata(musicfiles) ;
}
else{
return Promise.resolve([]) ;
}
}
null
因此,我希望函数fetchmp3
接收与给定文件夹及其子文件夹中的mp3文件相关的所有数据。 当前我的代码不工作。
这是因为正则表达式不能正常工作,所以可以使用
[\w]+\.(mp3)
另外,“\w”与单词字符(a-z,a-z,0-9,_)匹配名称。如果文件名中有除“_”以外的任何特殊字符,您可以将其添加到“\w”之后以匹配它们。 例如,如果你有“。” 在像“something.some.mp3”这样的文件名中,您可以这样添加它
[\w.]+\.(mp3)
您的正则表达式只匹配“.mp3”。