使用nodejs从文件中删除字符串

时间:2014-11-27 18:13:41

标签: javascript node.js

我正在尝试从text.txt中删除字符串。 text.txt文件包含以下格式的字符串

text/more/more.txt
text/home.txt
text/more/yoo/yoo.txt
text/about.txt

现在我正在做的是观看一个文件夹,当上面列出的任何文件(简称text/about.txt)被删除时,text.txt文件应自动更新为以下

text/more/more.txt
text/home.txt
text/more/yoo/yoo.txt

为此,我使用hound模块继续观察删除事件。并replace模块从text.txt文件中替换已删除的路径。以下是我的代码

watcher.on('delete', function(file, stats) {

    replace({
        regex: /file/g, // file is something like this text/about.txt
        replacement: '',
        paths: [path + '/text.txt'],
        recursive: true,
        silent: true,
    });

});

但我的上述代码不会从file文件中删除特定字符串,即text.txt我该如何解决这个问题?

更新

上面代码中的

file具有此值text/about.txt

2 个答案:

答案 0 :(得分:1)

我已更新变量 search_content replace_content 以处理特殊字符,然后使用 fs 模块替换文件中的所有字符串。您还可以在文件上运行同步循环以使用回调替换字符串。

// Require fs module here.
var search_content = "file";
var replace_content = '';
var source_file_path = '<<source file path where string needs to be replaced>>';
search_content = search_content.replace(/([.?&;*+^$[\]\\(){}|-])/g, "\\$1");//improve
search_content = new RegExp(search_content, "g");
fs.readFile(source_file_path, 'utf8', function (rfErr, rfData) {
    if (rfErr) {
        // show error
    }
    var fileData = rfData.toString();
    fileData = fileData.replace(search_content, replace_content);
    fs.writeFile(source_file_path, fileData, 'utf8', function (wfErr) {
        if (wfErr) {
            // show error
        }
        // callback goes from here
    });
});

答案 1 :(得分:1)

这是语义上的错误,你误解了执行此操作时会发生什么:

watcher.on('delete', function(file, stats) {
    ...
    regex: /file/g, // file is something like this text/about.txt
    ...
}

这里,RegExp对象中的file正在查找名为file的字符串,而不是您传递给函数的String对象的实际变量内容。这样做:

    regex: new RegExp(file, 'g'), // file is something like this text/about.txt

有关详细信息,请参阅RegExp