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 > -1; i--)
if (data_array[i].match(ip))
return i;
}()
delete data_array[lastIndex];
});
但是控制台给我消息: data_array 没有定义。我想删除 ip 地址行。
解决方案
您的代码似乎过于复杂。最大的问题是它data_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."
. 如果您在不同的行上有项目并想要删除任何匹配的项目,请在您的问题中澄清这一点。
以上内容改编自这个答案。
推荐阅读
- .net - 一个身份验证 API 到许多其他 API 微服务
- airflow - 教程中未显示气流 UI 暂停切换
- php - Moodle 和 SAML2 SSO Auth 插件循环
- r - 使用 lapply 函数在 R 中的列表中获取子列表的名称
- r - NULL 值,回归/相关切换
- firebase - Vue.js Firebase RealTime DB Rules - 为应用功能修改的属性设置规则
- java - RestTemplate & ResponseErrorHandler:给定一个不确定的返回对象处理错误的优雅方法
- .net - Tomcat在关机时锁定
- ios - XCode: Scrollview not scrolling
- android - Android Auto Music 应用未显示在“Android auto”应用中