代码之家  ›  专栏  ›  技术社区  ›  Anatsu

Javascript,nodejs:在控制台上提供一个“未找到字符串”消息。日志

  •  1
  • Anatsu  · 技术社区  · 7 年前

    下面列出的代码搜索 在其目录/子目录下包含指定的字符串。

    要激活它,请键入 节点[jsfilename][文件夹][文件名][扩展名] 我还想宣布: 未找到任何内容 在控制台中。每次 找不到单词。

    我试过了

    if (!regex.test(fileContent)) {
            console.log(`Noting found`);
    

    只有当您有一个没有word的文件时,它才起作用,如果没有word,它就会循环。 例如,如果您有4个文件,其中一个文件具有将显示的字符串 在目录:[文件]中找到了您的单词 已找到注释 已找到注释 已找到注释 .

    那么,我怎样才能在一次之后停止循环 !found 安慰日志,如果发现了什么,我如何防止它显示?

    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]);
    1 回复  |  直到 7 年前
        1
  •  0
  •   rsp    7 年前

    更改:

    if (!regex.test(fileContent)) {
            console.log(`Noting found`);
            // ...
    

    收件人:

    if (!printed && !regex.test(fileContent)) {
            console.log(`Noting found`);
            printed = true;
            // ...
    

    确保你有一个变量叫做 printed 在外部范围内定义,最初为falsy。