C# 从 URL 中读取随机行
C# Read random line from URL
如果您不想了解我的逻辑处理过程,请跳至 TLDR 版本。
我一直在摆弄一个执行以下操作的程序:
单击按钮时,从本地存储的文本文档中读取随机行,无法重复自身
然而我不希望它做的是能够从 URL 中读取,而不是本地存储的解决方案。
所以我的以下代码是当前函数和我尝试的结果,以及它的结果。
string[] readText = File.ReadAllLines(@"path\file.txt");
Random rnd = new Random();
textBox1.Text=(readText[rnd.Next(readText.Length)]);
自然地,所有这一切都是从存储在路径部分的文件中读取,然后创建一个随机生成器,并使文本框的输出是整个文档中的随机行。
我尝试用 URL 做的事情 部分 有效..
WebClient webCon= new WebClient();
string webData = webCon.DownloadString("URL");
textBox1.Text = webData;
然后按以下生成文档的随机行:
Random rnd = new Random();
textBox1.Text = ((webData[rnd.Next(webData.Length-1)]));
但是这是无效的,然后我不得不按照以下方式将 char 转换为字符串,这导致了一个非常有趣且完全无用的文本框。
Random rnd = new Random();
textBox1.Text = char.ToString((webData[rnd.Next(webData.Length-1)]));
TL;DR 版本
我有一个使用以下方法从本地文件读取的程序:
string[] readText = File.ReadAllLines(path)
然后从所述文档生成随机行以显示在文本框中,如下所示:
Random rndm = new Random();
textBox1.Text=(readText[rndm.Next(readText.Length)]);
但是我希望它能够执行的操作是从 URL(在线文档)中读取的。
我尝试使用 webClient 方法完成此任务,但它导致需要将文本框上的字符从 URL.
转换为字符串
WebClient webCon= new WebClient();
string webData = webCon.DownloadString("URL");
textBox1.Text = webData;
我希望这个问题尽可能接近于重新发布,我确实确保首先彻底检查了相关线程并且无法真正完成我的任务。提前致谢!
使用string.Split()
方法怎么样?它会归结为这样的事情:
//\n denotes the newline caracter
var lines = webData.Split('\n');
您现在可以像处理从文件中获得的结果一样处理 lines
数组。
我还建议您像这样使用 WebClient
:
using (var webCon = new WebClient())
{
string webData = webCon.DownloadString("URL");
//process webData
}
using {}
部分确保您的 WebClient
得到正确处置(这会释放资源)。
对您的思考过程的更多解释:
string
是由char
组成的数组,所以如果访问里面的元素,我就是char类型:
string myVal = "hi mom";
char myChar = myVal[0];
Random
对象只应在您的应用程序中构建一次,因此请确保如果您在短时间内生成大量随机数,请重复使用同一个 Random
对象(或者您可能会收到多次相同的值)
完整示例:
private static Random _random = new Random();
static void Main(string[] args)
{
using (var webCon = new WebClient())
{
var webData = webCon.DownloadString("");
var lines = webData.Split('\n');
var myRandomLine = lines[_random.Next(0, lines.Length - 1)];
MyTextBlock.Text = myRandomLine;
}
}
如果您不想了解我的逻辑处理过程,请跳至 TLDR 版本。
我一直在摆弄一个执行以下操作的程序: 单击按钮时,从本地存储的文本文档中读取随机行,无法重复自身
然而我不希望它做的是能够从 URL 中读取,而不是本地存储的解决方案。
所以我的以下代码是当前函数和我尝试的结果,以及它的结果。
string[] readText = File.ReadAllLines(@"path\file.txt");
Random rnd = new Random();
textBox1.Text=(readText[rnd.Next(readText.Length)]);
自然地,所有这一切都是从存储在路径部分的文件中读取,然后创建一个随机生成器,并使文本框的输出是整个文档中的随机行。
我尝试用 URL 做的事情 部分 有效..
WebClient webCon= new WebClient();
string webData = webCon.DownloadString("URL");
textBox1.Text = webData;
然后按以下生成文档的随机行:
Random rnd = new Random();
textBox1.Text = ((webData[rnd.Next(webData.Length-1)]));
但是这是无效的,然后我不得不按照以下方式将 char 转换为字符串,这导致了一个非常有趣且完全无用的文本框。
Random rnd = new Random();
textBox1.Text = char.ToString((webData[rnd.Next(webData.Length-1)]));
TL;DR 版本
我有一个使用以下方法从本地文件读取的程序:
string[] readText = File.ReadAllLines(path)
然后从所述文档生成随机行以显示在文本框中,如下所示:
Random rndm = new Random();
textBox1.Text=(readText[rndm.Next(readText.Length)]);
但是我希望它能够执行的操作是从 URL(在线文档)中读取的。 我尝试使用 webClient 方法完成此任务,但它导致需要将文本框上的字符从 URL.
转换为字符串WebClient webCon= new WebClient();
string webData = webCon.DownloadString("URL");
textBox1.Text = webData;
我希望这个问题尽可能接近于重新发布,我确实确保首先彻底检查了相关线程并且无法真正完成我的任务。提前致谢!
使用string.Split()
方法怎么样?它会归结为这样的事情:
//\n denotes the newline caracter
var lines = webData.Split('\n');
您现在可以像处理从文件中获得的结果一样处理 lines
数组。
我还建议您像这样使用 WebClient
:
using (var webCon = new WebClient())
{
string webData = webCon.DownloadString("URL");
//process webData
}
using {}
部分确保您的 WebClient
得到正确处置(这会释放资源)。
对您的思考过程的更多解释:
string
是由char
组成的数组,所以如果访问里面的元素,我就是char类型:
string myVal = "hi mom";
char myChar = myVal[0];
Random
对象只应在您的应用程序中构建一次,因此请确保如果您在短时间内生成大量随机数,请重复使用同一个 Random
对象(或者您可能会收到多次相同的值)
完整示例:
private static Random _random = new Random();
static void Main(string[] args)
{
using (var webCon = new WebClient())
{
var webData = webCon.DownloadString("");
var lines = webData.Split('\n');
var myRandomLine = lines[_random.Next(0, lines.Length - 1)];
MyTextBlock.Text = myRandomLine;
}
}