首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StreamReader读取包含

StreamReader读取包含
EN

Stack Overflow用户
提问于 2015-11-26 14:54:58
回答 2查看 1.6K关注 0票数 3

我试图从一个文本文件中读取,该文本文件在写入时具有多个输出,但当我想从我已经输出内容的文本文件中读取时,我希望选择最后一个条目(当写入有5行时,请记住每个条目,我只想要包含“加密文本:”)。

但是,它正在读取包含该内容的行,但我无法使用如何使它只显示包含我指定的字符串的最后一个条目。

代码语言:javascript
复制
using System;
using System.IO;

namespace ReadLastContain
{
    class StreamRead
    {
        static void Main(string[] args)
        {
            string TempFile = @"C:\Users\Josh\Desktop\text2.txt";
            using (var source = new StreamReader(TempFile))
            {
                string line;
                while ((line = source.ReadLine()) != null)
                {
                    if (line.Contains("Ciphered Text:"))
                    {
                        Console.WriteLine(line);
                    }
                }
            }
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-26 14:58:28

为了更好地阅读,我建议使用LINQ:

代码语言:javascript
复制
string lastCipheredText = File.ReadLines(TempFile)
    .LastOrDefault(l => l.Contains("Ciphered Text:"));

如果没有这样的线路,那就是null。如果不能使用LINQ:

代码语言:javascript
复制
string lastCipheredText = null;
while ((line = source.ReadLine()) != null)
{
    if (line.Contains("Ciphered Text:"))
    {
        lastCipheredText = line;
    }
}

它总是被覆盖,所以你会自动得到包含它的最后一行。

票数 3
EN

Stack Overflow用户

发布于 2015-11-26 14:58:14

您可以使用Linq

代码语言:javascript
复制
var text = File
  .ReadLines(@"C:\Users\Josh\Desktop\text2.txt")
  .LastOrDefault(line => line.Contains("Ciphered Text:"));

if (null != text) // if there´s a text to print out
  Console.WriteLine(text);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33941592

复制
相关文章

相似问题

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