Javascript,nodejs: 在 console.log 上发送 "string not found" 消息
Javascript,nodejs: give a "string not found" messege on console.log
下面列出的代码搜索文件
在 directory/subdirectories.
下包含指定的字符串
要激活它,您输入 node [jsfilename] [folder] [filename] [ext]
我还希望它宣布:Nothing found in a console.log every time that
找不到一个词。
我试过了
if (!regex.test(fileContent)) {
console.log(`Noting found`);
它只有在你有一个文件没有你的话时才有效,但如果没有,它就会循环。
例如,如果您有 4 个文件,其中一个文件包含它将显示的字符串
您的词在目录中找到:[文件]
发现发现
发现发现
注意到发现。
那么,我如何才能在一个 !found
console.log 之后停止循环,以及如何防止它在找到某些东西时显示?
const path = require('path');
const fs = require('fs');
function searchFilesInDirectory(dir, filter, ext) {
if (!fs.existsSync(dir)) {
console.log(`Specified directory: ${dir} does not exist`);
return;
}
const files = fs.readdirSync(dir);
const found = getFilesInDirectory(dir, ext);
found.forEach(file => {
const fileContent = fs.readFileSync(file);
const regex = new RegExp('\b' + filter + '\b');
if (regex.test(fileContent)) {
console.log(`Your word was found in directory: ${file}`);
}
});
}
function getFilesInDirectory(dir, ext) {
if (!fs.existsSync(dir)) {
console.log(`Specified directory: ${dir} does not exist`);
return;
}
let files = [];
fs.readdirSync(dir).forEach(file => {
const filePath = path.join(dir, file);
const stat = fs.lstatSync(filePath);
if (stat.isDirectory()) {
const nestedFiles = getFilesInDirectory(filePath, ext);
files = files.concat(nestedFiles);
} else {
if (path.extname(file) === ext) {
files.push(filePath);
}
}
});
return files;
}
searchFilesInDirectory(process.argv[2], process.argv[3], process.argv[4]);
变化:
if (!regex.test(fileContent)) {
console.log(`Noting found`);
// ...
至:
if (!printed && !regex.test(fileContent)) {
console.log(`Noting found`);
printed = true;
// ...
并确保您在外部作用域中定义了一个名为 printed
的变量,最初是假的。
下面列出的代码搜索文件 在 directory/subdirectories.
下包含指定的字符串要激活它,您输入 node [jsfilename] [folder] [filename] [ext] 我还希望它宣布:Nothing found in a console.log every time that 找不到一个词。
我试过了
if (!regex.test(fileContent)) {
console.log(`Noting found`);
它只有在你有一个文件没有你的话时才有效,但如果没有,它就会循环。 例如,如果您有 4 个文件,其中一个文件包含它将显示的字符串 您的词在目录中找到:[文件] 发现发现 发现发现 注意到发现。
那么,我如何才能在一个 !found
console.log 之后停止循环,以及如何防止它在找到某些东西时显示?
const path = require('path');
const fs = require('fs');
function searchFilesInDirectory(dir, filter, ext) {
if (!fs.existsSync(dir)) {
console.log(`Specified directory: ${dir} does not exist`);
return;
}
const files = fs.readdirSync(dir);
const found = getFilesInDirectory(dir, ext);
found.forEach(file => {
const fileContent = fs.readFileSync(file);
const regex = new RegExp('\b' + filter + '\b');
if (regex.test(fileContent)) {
console.log(`Your word was found in directory: ${file}`);
}
});
}
function getFilesInDirectory(dir, ext) {
if (!fs.existsSync(dir)) {
console.log(`Specified directory: ${dir} does not exist`);
return;
}
let files = [];
fs.readdirSync(dir).forEach(file => {
const filePath = path.join(dir, file);
const stat = fs.lstatSync(filePath);
if (stat.isDirectory()) {
const nestedFiles = getFilesInDirectory(filePath, ext);
files = files.concat(nestedFiles);
} else {
if (path.extname(file) === ext) {
files.push(filePath);
}
}
});
return files;
}
searchFilesInDirectory(process.argv[2], process.argv[3], process.argv[4]);
变化:
if (!regex.test(fileContent)) {
console.log(`Noting found`);
// ...
至:
if (!printed && !regex.test(fileContent)) {
console.log(`Noting found`);
printed = true;
// ...
并确保您在外部作用域中定义了一个名为 printed
的变量,最初是假的。