如何从文本文件中找到一个词,然后在 C# 上读取它之后的下一个词
How to find a word from a text file and then read the next word after it on C#
好的,我有一个名为 "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;
}
}
这个问题它读取了整行并且读取了最后一个条目
希望有人能帮助我。
提前致谢
请考虑您的数据位于名为 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());
}
}
听起来您正在尝试读取 INI 文件。如果这是您的目的,请查看
这篇文章 An INI file handling class using C#
要么
Reading/writing an INI file from Whosebug.
好的,我有一个名为 "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;
}
}
这个问题它读取了整行并且读取了最后一个条目
希望有人能帮助我。 提前致谢
请考虑您的数据位于名为 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());
}
}
听起来您正在尝试读取 INI 文件。如果这是您的目的,请查看 这篇文章 An INI file handling class using C# 要么 Reading/writing an INI file from Whosebug.