转载声明:文章来源https://zhuanlan.zhihu.com/p/366655285
本文章向大家介绍NodeJs正则关键字查找目录文件,主要包括NodeJs正则关键字查找目录文件及查找文件包含关键词使用实例、应用技巧、基本知识点总结和需要注意事项。
需求:
关键字搜索项目输出相关方法。例:整个搜索关键词,比如查找接口开头为/ipos-chains/的接口,然后将所有结果汇总。
技术点:
NodeJs遍历目录,读取文件,正则关键字匹配,返回条件数组。
代码:
var path = require("path");
var fs = require("fs");
const bigArr = [];
//路由
const filePath = path.resolve('./src');
//关键字
const lookingForString = /ipos-chains\/.*?(?=')/g;
recursiveReadFile(filePath);
const newArr = [...new Set(bigArr)];
console.log('data—-->',newArr);
// 如果内容太多,可以打印成字符串格式,然后格式化下代码就OK了
// console.log('data—-->',JSON.stringify(newArr));
function recursiveReadFile(fileName){
if(!fs.existsSync(fileName)) return;
if(isFile(fileName)){
check(fileName);
}
if(isDirectory(fileName)){
var files = fs.readdirSync(fileName);
files.forEach(function(val,key){
var temp = path.join(fileName,val);
if(isDirectory(temp)) recursiveReadFile(temp);
if (isFile(temp)) check(temp);
})
}
}
function check(fileName){
var data = readFile(fileName);
var exc = new RegExp(lookingForString);
const arr = data.match(exc);
if(!arr)return;
bigArr.push(...arr);
}
function isDirectory(fileName){
if(fs.existsSync(fileName)) return fs.statSync(fileName).isDirectory();
}
function isFile(fileName){
if(fs.existsSync(fileName)) return fs.statSync(fileName).isFile();
}
function readFile(fileName){
if(fs.existsSync(fileName)) return fs.readFileSync(fileName,"utf-8");
}
帖子还没人回复快来抢沙发