gpt4 book ai didi

c# - 使用 C# 解析 robots.txt 文件中的各个行

转载 作者:太空狗 更新时间:2023-10-30 00:17:10 31 4
gpt4 key购买 nike

正在开发一个解析 robots.txt 的应用程序。我自己写了一个方法,从网络服务器中提取文件,并将输出放入文本框中。我希望输出为文件中的每一行显示一行文本,就像您正常查看 robots.txt 时显示的那样,但是我的文本框中的输出是所有没有文本的行回车符或换行符。所以我想我会很狡猾,为所有行制作一个 string[],制作一个 foreach 循环,一切都会好起来的。唉,那没有用,所以我想我会尝试 System.Enviornment.Newline,但仍然没有用。这是现在听起来的代码......我如何更改它以便我获得 robots.txt 的所有单独行而不是一堆拼凑在一起的文本?

public void getRobots()
{
WebClient wClient = new WebClient();
string url = String.Format("http://{0}/robots.txt", urlBox.Text);

try
{
Stream data = wClient.OpenRead(url);
StreamReader read = new StreamReader(data);
string[] lines = new string[] { read.ReadToEnd() };

foreach (string line in lines)
{
textBox1.AppendText(line + System.Environment.NewLine);
}
}
catch (WebException ex)
{
MessageBox.Show(ex.Message, null, MessageBoxButtons.OK);
}
}

最佳答案

您正在将整个文件读入 lines 数组的第一个元素:

string[] lines = new string[] {read.ReadToEnd()};

所以你的循环所做的就是将文件的全部内容添加到文本框中,然后是一个换行符。用这些替换该行:

string content = read.ReadToEnd();
string[] lines = content.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);

看看是否可行。

编辑:根据 Fish 下面关于逐行阅读的评论,另一种可能更有效的方法 — 将 try block 中的代码替换为:

Stream data = wClient.OpenRead(url);
StreamReader read = new StreamReader(data);

while (read.Peek() >= 0)
{
textBox1.AppendText(read.ReadLine() + System.Environment.NewLine);
}

关于c# - 使用 C# 解析 robots.txt 文件中的各个行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3422276/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com