gpt4 book ai didi

javascript - 在 Txt 文件中查找字符串,删除整行

转载 作者:IT老高 更新时间:2023-10-28 23:26:57 30 4
gpt4 key购买 nike

我目前正在使用 node.js 创建一个 IRC 机器人。该机器人允许用户将歌曲链接添加到数据库。每次有人提交歌曲时,它都会被添加到“shuffle.txt”的新行中,如下所示:

user1,The Beatles,Yesterday,(youtube link)
user2,The Rolling Stones,Angie,(youtube link)
user1,The Bealtes,Yellow Sumbarine,(youtube link)

请注意,user1 在其最新添加的信息中输入错误。我正在尝试创建一个 UNDO 命令,以便用户可以删除他们最近输入的行。我计划通过在 shuffle.txt 中找到他们名字的最新出现并删除它所在的整行来做到这一点。这是我的消息监听器:

bot.addListener('message', function(from, to, message) {
if (message.indexOf(config.prefix) == 0) {

message = message.slice(1);
var token = message.split(" ");

if (token[0] == 'undo') {
//find and delete
}

}
});

输入命令的用户存储为from

我假设我必须按照以下方式做一些事情:

var songList = fs.readFileSync('shuffle.txt', 'utf8');
var position = songList.indexOf(from);

if (position != -1) { //if 'from' found

//find LAST occurrence of 'from'
//get length from here to next occurrence of '\n'
//substr(length + 1)

fs.writeFile('shuffle.txt', songList, function(err) {
if (err) {
console.log (err);
}

}

我是 JavaScript 新手,这是我第一次使用 node.js,所以我可以使用我能获得的任何帮助!谢谢大家。

编辑:我还应该指出,我不需要命令识别方面的帮助。我只需要查找/删除部分的帮助。干杯!

最佳答案

Edit2:使用新解决方案进行编辑。

你可以试试这个:

fs.readFile('shuffle.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('user1'))
return i;
}()

delete data_array[lastIndex];

});

将文件分成几行,通过一个简单的循环向后查找最后一行,使用 delete 删除该行,然后将其修补在一起。

demo

此外,您不应在 Node 中使用 readFileSync,因为阻塞 Node 可能很危险,因为它是单线程的。

关于javascript - 在 Txt 文件中查找字符串,删除整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22858206/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com