我有150,000行文本文件,它存储为字符串数组:
String[] OutputArray = File.ReadAllLines(TB_Complete.Text);
如何从OutputArray中删除指定的行列表?或者更好的是我如何删除前1000行的OutputArray?
*编辑:我需要前1000行读取,解析,输出到另一个文本文件,然后删除。对不起,我没有澄清。
答案 0 :(得分:5)
我会使用ReadLines()
,因为它返回IEnumerable<string>
,然后跳过前1000行。
String[] OutputArray = File.ReadLines(TB_Complete.Text).Skip(1000).ToArray();
答案 1 :(得分:2)
听起来你需要前1000行做一件事,其余的行要做其他事情;我会尝试这样做,而不需要在内存中保存所有内容,所以如何:
int index = 0;
foreach(var line in File.ReadLines(path)) {
if(index++ < 1000) {
// this is one of the first 1000 lines;
DoA(line);
} else {
// this is one of the other lines
DoB(line);
}
}
答案 2 :(得分:0)
实际上你的问题是如何从数组中删除一个数组元素,而this post可能很有用,虽然在你的情况下效率不高。
您有没有使用更合适的数据结构?
例如LIST<T>
?
元素删除在列表中很容易且非常有效。
答案 3 :(得分:0)
将文件写回(我假设删除它们时假设这个)
List<string> outputArray = File.ReadAllLines(filePath).ToList();
List<string> first1000Lines = outputArray.Take(1000).ToList();
// Do what you need to do with first1000Lines
outputArray.RemoveRange(0, 1000);
File.WriteAllLines(filePath, outputArray);
您也可以使用Skip。而不是RemoveRange。
File.WriteAllLines(filePath, outputArray.Skip(1000));
答案 4 :(得分:-1)
&#34;如何从OutputArray中删除指定的行列表?&#34;
var removeTheseLines= new string[5];
var lines = new string[10];
var filterLines = lines.Except(removeTheseLines).ToArray();