【问题标题】:How to find a word from a text file and then read the next word after it on C#如何从文本文件中找到一个单词,然后在 C# 上读取它之后的下一个单词
【发布时间】:2016-07-10 03:32:07
【问题描述】:

好的,我有一个名为“info.txt”的 txt 文件,其中包含以下文本:

[entry]
title = Hello World
info = sometext
number = 0
available = -1

[entry]
title = All Vids
info = somemoretext
number = 1
available = 0

[entry]
title = All pics
info = somedifferenttext
number = 2
available = -1

[entry]
title = all music
info = differenttext
number = 3
available = 0

在 C# 上,我想要做的是打开这个文件并搜索“title =”,然后在它后面获取任何单词,然后将它放在一个文本框中。 例如,在它查找“title =”之后,我希望它把“Hello World”放在 textbox1 中。然后,如果有另一个“title =”,即“All Vids”,我想把它放在 textbox2 中。如果有更多的“title =”实例应该放在textbox3、textbox4等中,也应该这样做。

这是我从另一个答案中找到的工作:

        private void button1_Click(object sender, EventArgs e)
    {
        List<List<string>> groups = new List<List<string>>();
        List<string> current = null;
        foreach (var line in File.ReadAllLines(@"C:\Users\Rohul\Documents\info.txt"))
        {
            if (line.Contains("title") && current == null)
                current = new List<string>();
            else if (line.Contains("info") && current != null)
            {
                groups.Add(current);
                current = null;
            }
            if (current != null)
            richTextBox1.Text = line;
        }
    }

问题在于它读取整行并读取最后一个条目

我希望有人可以帮助我。 提前致谢

【问题讨论】:

  • 您已经很好地解释了您的要求,您没有做的是展示解决问题的任何努力。您是否只是等待有人为您编写代码?请阅读help center,尤其是How to Ask
  • 使用For-Loop 遍历文本文件中的所有行,然后使用IF 语句检查以title = 开头的行。这是小学,我小学的侄子可以编码。请用谷歌搜索我提供的条款并尝试自己解决。欢迎来到Stack Overflow,这是一个面向专业程序员的网站,而不是一个为我做家务的网站。祝你好运!
  • 感谢您的帮助。我已经添加了到目前为止我所做的工作。我正在尝试自学如何编码,所以我有点新
  • @RohulAhmed 你能改进语法(超越代码)吗?有些地方读起来有点困难。
  • @RohulAhmed 检查下面的答案,它应该适合你。

标签: c# readfile word next


【解决方案1】:

考虑您的数据位于名为 data.txt 的文件中。

逻辑:读取数据,换行,找到包含"title ="的行。删除该标识符并取出该行的其余部分。

string data = File.ReadAllText("data.txt");
string identifier = "title =";

List<string> results = 
    data.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
    .Where(x => x.Contains(identifier))
    .Select(x => x.Replace(identifier, String.Empty).Trim()).ToList();

之后,您将在results 中获得字符串列表。随心所欲。

如果你需要像你尝试的那样逐行阅读,那么:

string identifier = "title =";
string data = File.ReadAllText("data.txt");

List<String> results = new List<string>();

foreach(string line in File.ReadAllLines("data.txt"))
{
    if(line.Contains(identifier))
    {
        results.Add(line.Replace(identifier, string.Empty).Trim());
    }
}

【讨论】:

    【解决方案2】:

    听起来您正在尝试读取 INI 文件。如果这是您的目的,请查看 本文An INI file handling class using C# 或者 Reading/writing an INI file from StackOverflow.

    【讨论】:

    • 感谢您的帮助。是的,你有点对。但问题是,如果您查看我的文本文件,它有多个 [Entry] 实例,我只能使用您的方法读取第一个 [Entry]。我不知道如何阅读其他 3 [条目]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 2019-03-12
    相关资源
    最近更新 更多