如果您没有解释我的逻辑处理,请跳至TLDR版本。
我一直在摆弄一个执行以下操作的程序: 单击按钮时,从本地存储的文本文档中读取随机行,但无法重复
然而,我不想做的是能够从URL读取,而不是本地存储的解决方案。所以我的下面的代码是当前的函数,我尝试了什么,以及它产生了什么。
string[] readText = File.ReadAllLines(@"path\file.txt");
Random rnd = new Random();
textBox1.Text=(readText[rnd.Next(readText.Length)]);
当然,所有这一切都是从存储在路径部分中的文件中读取的,然后创建一个随机生成器,并使文本框的输出成为整个文档中的随机行。
我尝试使用网址,部分工作..
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)]));
我有一个使用以下方法从本地文件读取的程序:
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;
我希望这个问题与转贴不太接近,我确保首先彻底检查相关主题并且无法完成我的任务。提前谢谢!
答案 0 :(得分:0)
如何使用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("http://stackoverflow.com/questions/43253136/");
var lines = webData.Split('\n');
var myRandomLine = lines[_random.Next(0, lines.Length - 1)];
MyTextBlock.Text = myRandomLine;
}
}