首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取字符串每个数字c#

读取字符串每个数字c#
EN

Stack Overflow用户
提问于 2012-08-02 00:43:06
回答 4查看 293关注 0票数 5

假设这是我的txt文件:

代码语言:javascript
复制
line1
line2
line3
line4
line5

我正在使用以下命令读取此文件的内容:

代码语言:javascript
复制
 string line;
List<string> stdList = new List<string>();

StreamReader file = new StreamReader(myfile);
while ((line = file.ReadLine()) != null)
{                
    stdList.Add(line);           
}
finally
{//need help here
}

现在我想在stdList中读取数据,但是每2行只读一次值(在本例中,我必须读取"line2“和"line4")。有没有人能把我放在正确的位置?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-08-02 00:46:52

试试这个:

代码语言:javascript
复制
string line;
List<string> stdList = new List<string>();

StreamReader file = new StreamReader(myfile);
while ((line = file.ReadLine()) != null)
{
    stdList.Add(line);
    var trash = file.ReadLine();  //this advances to the next line, and doesn't do anything with the result
}
finally
{
}
票数 0
EN

Stack Overflow用户

发布于 2012-08-02 00:48:19

甚至比Yuck的方法更短,而且它不需要一次性将整个文件读取到内存中:)

代码语言:javascript
复制
var list = File.ReadLines(filename)
               .Where((ignored, index) => index % 2 == 1)
               .ToList();

诚然,它确实需要.NET 4。关键部分是overload of Where,它为谓词提供索引和值以供操作。我们并不真正关心这个值(这就是为什么我将这个参数命名为ignored) --我们只需要奇怪的索引。显然,当我们构建列表时,我们关心的是值,但这很好-它只在谓词中被忽略。

票数 10
EN

Stack Overflow用户

发布于 2012-08-02 00:45:56

您可以将文件读取逻辑简化为一行,然后以这种方式循环遍历每隔一行:

代码语言:javascript
复制
var lines = File.ReadAllLines(myFile);
for (var i = 1; i < lines.Length; i += 2) {
  // do something
}

编辑:从i = 1开始,在您的示例中是line2

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11763821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档