Javascript 节点js-从文本文件中删除字符串

Javascript 节点js-从文本文件中删除字符串,javascript,node.js,Javascript,Node.js,如何从文本文件中删除字符串 fs.readFile('./banlist.txt', function read(err, data) { if (err) { throw err; } lastIndex = function(){ for (var i = data_array.length - 1; i > -

如何从文本文件中删除字符串

fs.readFile('./banlist.txt', function read(err, data) {
                if (err) {
                    throw err;
                }
                lastIndex = function(){
                    for (var i = data_array.length - 1; i > -1; i--) 
                    if (data_array[i].match(ip))
                        return i;
                }()
                delete data_array[lastIndex];
            });
但控制台给我的信息是:数据数组未定义。
我想删除ip地址行。

您的代码似乎过于复杂。最大的问题是
data\u array
不存在,而且
data
不是数组。最简单的解决方案(虽然是同步的,但如果处理的是大文件,可能会比较慢)如下所示:

var data = fs.readFileSync('banlist.txt', 'utf-8');
var ip = "STRING_TO_REMOVE";

var newValue = data.replace(new RegEx(ip), '');
fs.writeFileSync('banlist.txt', newValue, 'utf-8');
这将从文件中的任何位置删除指定字符串的第一个匹配项。这意味着,如果您正在搜索“foo”,并且您的文件包含
“This is foobar.”
它将以
“This is bar.”
结束。如果您在单独的行中有项目,并且希望删除任何匹配的项目,请在您的问题中澄清这一点


以上内容改编自答案。

您在哪里定义
数据\u数组
?我在这个代码段中没有看到它。文本文件中的所有内容都是字符串。而且,
fs.readFile
不会将数据填充为数组,其次字符串是不可变的。delete关键字仅对对象的成员有效<代码>数据数组未在任何位置定义。检查函数中的参数是否正确。您可能需要在没有该字符串的情况下重新编写整个过程。读取文件,修改数据,然后重写文件?(如果大小合理…)如果不是太大:
var newData=data.toString().split('\n').filter(val=>val!==ip)。join('\n')
,然后将newData(string)写回文件。我想不出它会创建空格的任何原因。如果你的意思是它不删除空格,那是故意的。可以向删除字符串中添加空格以删除空格。如果您正在寻找更复杂的搜索(例如仅在有空格的情况下删除空格),您可以使用正则表达式替换
新正则表达式(ip)
,如前所述,或者询问其他问题。