【校招VIP】Node Js搜索关键词并返回结果数组插件

05月11日 收藏 0 评论 0 前端开发

【校招VIP】Node Js搜索关键词并返回结果数组插件

转载声明:文章来源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");
}


C 0条回复 评论

帖子还没人回复快来抢沙发