我想将一个文本文件中的用户名放在另一个文本文件中,这样我就可以获得包含所有信息的原始文本文件和另一个只包含用户名的文本文件。每天都会生成一个包含所有用户名及其相应组的新文件,因此应该从最新文件中读取该文件。
遗憾的是,原始文本文件中的所有用户名都位于未知位置,但有一件事是从组信息中分离用户名。
他们在他们上方的行中都有一个 [space] 和一行“-------------------- ---------“在他们下面。发生的另一个问题是,某些用户名在其下方有电子邮件地址,有些则没有。 因此,检查用户名是否是唯一可靠的来源是用户名上方的 [space] 。
因为它是一个包含大约700个用户名的相当大的文件,所以手动将它们全部写下来会非常不舒服并且是无法容忍的。
示例输入文件(开头有一个空白行,但没有显示标记):
User1
-----------------------------
Group1
Group3
Group4
User2
mail@mail.com
-----------------------------
Group2
User3
-----------------------------
exampleGroup
Potatoes
我真的希望你能帮助我,因为我是编码的初学者。
修改
正如O. R. Mapper所说,这不是“为我编写代码” - 服务。
我忘了包含我的代码,我试图让它与之合作。 不幸的是它没有用。这是
string path = System.AppDomain.CurrentDomain.BaseDirectory;
path += "users.txt";
string[] fileLines = File.ReadAllLines(path);
if (File.Exists(path))
{
for (int zeileIndex = 0; zeileIndex < fileLines.Length; zeileIndex++)
{
string zeile = fileLines[zeileIndex];
//zeile is simply a word for line in another language
if (zeile.Contains(" "))
{
++zeileIndex;
if (zeile.Contains(" "))
{
++zeileIndex;
listboxNames.Items.Add(zeile);
}
}
}
}
答案 0 :(得分:0)
这是解决问题的一种方法草图。顺便说一下,对于像你这样的初学程序员,我建议从像Python这样的高级语言开始,因为这样你就可以专注于编程概念而不是低级内存管理和指针。
我不知道C#所以我没有仔细查看你的代码。
输入数据如下所示:
... other stuff ...
[space]
line with username
optional line with email address
------------ (some number of repeated hyphens)
... other stuff ...
在你的示例文件中,[space]似乎是一个空行,所以我会假设。
我会假设[space]总是在用户名行之前,而且从来没有。我还假设文件的第一行绝不是用户名行。
所以,基本上我们想要通过这些线,跟踪上一行是空的时间。在伪代码中:
prev_empty = false
while (readline(line)):
if line is empty:
prev_empty = true
else:
if prev_empty:
username = extract_uname(line)
output(username)
prev_empty = false
如果您决定捕获电子邮件地址,则逻辑会变得更复杂,但您使用的方法基本相同:使用标记或其他变量跟踪状态,跟踪文件中的位置。< / p>