C# 如何通过传递一些行来读取文本文件行?
我有一个文本文件,其中包含一些行中的信息。我想读几行。例如,假设我有1-10条线。当我阅读的时候,我想用下面的方式来阅读C# 如何通过传递一些行来读取文本文件行?,c#,visual-studio-2010,C#,Visual Studio 2010,我有一个文本文件,其中包含一些行中的信息。我想读几行。例如,假设我有1-10条线。当我阅读的时候,我想用下面的方式来阅读 1 <- i wanna read this 2 <- Skip this 3 <- read this 4 <- Skip this 5 <- read this 6 <- Skip this 7 <- read this 8 <- Skip this 9 <- read this 10 <- Skip this
1 <- i wanna read this
2 <- Skip this
3 <- read this
4 <- Skip this
5 <- read this
6 <- Skip this
7 <- read this
8 <- Skip this
9 <- read this
10 <- Skip this
1编辑以使用偶数行和奇数行的查找
根据您的标准循环并添加到结果集中
var lines = new Dictionary<int, List<string>>() {
{ 0, new List<string>() },
{ 1, new List<string>() }
};
using (StreamReader sr = new StreamReader(filename)) {
int i=0;
while (!sr.EndOfStream) {
string line = sr.ReadLine();
lines[i%2].Add(line);
}
}
var行=新字典(){
{0,new List()},
{1,新列表()}
};
使用(StreamReader sr=新StreamReader(文件名)){
int i=0;
而(!sr.EndOfStream){
字符串行=sr.ReadLine();
行[i%2]。添加(行);
}
}
然后,第[0]行将获得偶数行,第[1]行将获得奇数行。编辑以使用偶数行和奇数行的查找
根据您的标准循环并添加到结果集中
var lines = new Dictionary<int, List<string>>() {
{ 0, new List<string>() },
{ 1, new List<string>() }
};
using (StreamReader sr = new StreamReader(filename)) {
int i=0;
while (!sr.EndOfStream) {
string line = sr.ReadLine();
lines[i%2].Add(line);
}
}
var行=新字典(){
{0,new List()},
{1,新列表()}
};
使用(StreamReader sr=新StreamReader(文件名)){
int i=0;
而(!sr.EndOfStream){
字符串行=sr.ReadLine();
行[i%2]。添加(行);
}
}
然后第[0]行得到偶数行,第[1]行得到奇数行。伪代码:
for (i=0; i<filelines.Count; i++)
{
if (i mod 2 == 1) oddlines.Add(filelines[i]);
}
用于(i=0;i伪代码:
for (i=0; i<filelines.Count; i++)
{
if (i mod 2 == 1) oddlines.Add(filelines[i]);
}
对于(i=0;i您可以使用LINQ的重载,其中
包括索引,并使用%
每隔一行过滤一次:
var everyOtherLine = System.IO.File.ReadAllLines("path")
.Where((s, i) => i % 2 == 0);
您可以使用包含索引的LINQWhere
的重载,并使用%
每隔一行过滤一次:
var everyOtherLine = System.IO.File.ReadAllLines("path")
.Where((s, i) => i % 2 == 0);
你熟悉模块化数学吗?如果你%2你的行号,你可以找出哪些是奇数,哪些是偶数。(只是一个提示…)实际上没有尝试过任何东西。我想不出任何东西。你熟悉模块化数学吗?如果你%2你的行号,你可以找出哪些是奇数,哪些是偶数。(只是一个提示…)实际上我还没有试过。我想不出有什么办法。如果OP想以后读跳过的行,也许她可以同时把这两行读到内存中。@BenSchwehn good call,updated。老实说,虽然我喜欢Bort的答案,但它更可读。如果OP想以后读跳过的行,也许她可以同时把这两行读到内存中。@BenSchwehn good call,updated。老实说,虽然我喜欢Bort的答案,但它更具可读性。我不明白这个解决方案。有没有更简单的方法?哪一部分不清楚?其中
只返回通过给定条件的值。本例中的条件是行号为偶数的行(I%2==0
)。这会得到第一个、第三个等。line我会尝试一下,让你知道如果比这更简单,我会感到震惊。我不明白这个解决方案。有没有更简单的方法?哪部分不清楚?其中
只返回通过给定条件的值。在这种情况下,条件是行号为偶数的行(i%2==0
)。这将为您提供第一个、第三个等。我将尝试这样做,并告诉您,如果变得比这更简单,我会感到震惊。