我正在编辑文本文件并将内容从一个值更改为另一个值。 到目前为止一切正常,但是当我删除该文件的一行时,我已经走到了尽头。 我想要一个函数来读取具有类似内容的文件......
姓名彼得
长度185
姓名苏珊
长度
姓名哈利
长度177
并删除所有包含单词Length NOT后跟任何内容的行并给出结果
姓名彼得
长度185
姓名苏珊
姓名哈利
长度177
我使用过代码
System.IO.File.WriteAllLines(
strLabelExportTotal,
File.ReadAllLines(strLabelExportPreLenAdjust)
.Select(1 => 1 == "LENGTH " ? "LENGTH 0" : 1));
设置如果缺少单词Length之后的值,则应该将值设为0.但现在我希望该行消失...
答案 0 :(得分:1)
您可以使用以下步骤:
\n
作为拆分器LENGTH
代码:
string fileText = File.ReadAllText(path);
var list = fileText.Split('\n').ToList();
list.Remove("LENGTH");
File.WriteAllLines(path, list);
OR
var list = File.ReadAllLines(path).ToList();
list.Remove("LENGTH");
File.WriteAllLines(path, list);
答案 1 :(得分:1)
您将所有行作为可枚举的行,并且当前您输出的行数与输出完全相同。 .Select()
方法不会更改正在处理的项目数。
您可能希望将.Select()
方法更改为.Where()
方法,该方法仅输出与某个谓词匹配的行。
如:
System.IO.File.WriteAllLines(
strLabelExportTotal,
File.ReadAllLines(strLabelExportPreLenAdjust)
.Where(x => x != "LENGTH "));
希望这有帮助
答案 2 :(得分:0)
@import 'custom.css';
代码中的第一行从路径C:\ file.txt读取文件,并将其作为字符串数组(每行都是此数组中的元素)
代码进程中的第二行是数组,它过滤并生成一个名为arr2的新数组,其中新数组没有任何行等于长度。
代码中的第三行将新数组写入文件C:\ file.txt