【问题标题】:Split result of WebClient.DownloadString into multiple lines [duplicate]将 WebClient.DownloadString 的结果拆分为多行 [重复]
【发布时间】:2019-09-21 12:43:17
【问题描述】:

我试图在 webclient.DownloadString("pastebinsite");但它说不能将类型'char'转换为'string',所以我添加了一个string[] downloaded = wc.DownloadString(arac[0] + arac[1] + @"//" + arac[2] + "/raw/" + arac[3]);

这不起作用,因为它说无法将类型 'string' 转换为 'string[]' 我被卡住了,无法在线找到答案。

我尝试过改变类型

        {
            StringBuilder sb = new StringBuilder();
            Console.WriteLine("start?");
            Console.ReadKey();
            string[] lines = File.ReadAllLines(Directory.GetCurrentDirectory() + @"\Lines.txt");
            WebClient wc = new WebClient();
            int _checked = 0;
            int _error = 0;
            foreach(string line in lines)
            {
                ++_checked;
                //Pastebin text viewer
                try
                {
                    if (line.Contains("pastebin"))
                    {
                        var arac = line.Split('/');

//ERROR LINE CANNOT CONVERT TYPE 'STRING' TO 'STRING[]' Below
                        string[] downloaded = wc.DownloadString(arac[0] + arac[1] + @"//" + arac[2] + "/raw/" + arac[3]);

                        foreach(string line2 in downloaded)
                        {
                            if (line2.Contains(":")
                                {

                                //Console.WriteLine(arac[0] + arac[1] + @"//" + arac[2] + "/raw/" + arac[3]);
                                Console.WriteLine(arac[0] + arac[1] + @"//" + arac[2] + "/raw/" + arac[3]);
                                sb.Append(downloaded);
                            }
                        }
                    }
                    else
                    {
                        //Console.WriteLine("Not valid pastebin link!");
                    }
                    Console.Title = "Checked : " + _checked;
                }
                catch(WebException ex)
                {
                    ++_error;
                    Console.WriteLine("Error: " + _error);
                }

            }
            File.WriteAllText(Directory.GetCurrentDirectory() + @"\Output " + _checked + ".txt", sb.ToString());
            Console.Clear();
            Console.WriteLine("FINISHED");
            Console.ReadKey();
        }```

【问题讨论】:

  • DownloadString 方法返回 string,而您正尝试将结果分配给 string[]。试试:string downloaded = …
  • 如果要将DownloadString 的结果转换为string[],可以在换行符处拆分:string[] lines = downloaded.Split(new[] {Environment.NewLine}, StringSplitOptions.None);
  • 您无法将字符串从 wc.DownloadString 转换为字符串数组 (string[] downloaded)。将 string[] downloaded 更改为 string downloaded 并根据需要拆分此字符串

标签: c# string webclient downloadstring


【解决方案1】:

wc.DownloadString(..) 返回一个字符串而不是字符串[]。

你需要拆分字符串才能得到一个字符串[]
如果您需要 string[] 包含行,可能的解决方案是:

var stringResult = wc.DownloadString(arac[0] + arac[1] + @"//" + arac[2] + "/raw/" + arac[3]);

然后以下一项

var lines = stringResult.Split(new [] { '\r', '\n' });
var lines = Regex.Split(stringResult, "\r\n|\r|\n");
var lines = stringResult.Split(new[] {"\r\n", "\r", "\n"}, StringSplitOptions.None)

最后

foreach(string line in lines) {...}

【讨论】:

    猜你喜欢
    • 2014-09-06
    • 2017-03-28
    • 2016-08-09
    • 2015-07-28
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多