【问题标题】:Console not writing控制台不写
【发布时间】:2017-05-17 22:56:26
【问题描述】:
using System;
using System.Net;
static class Program {
    public static void Main()
    {
        WebClient wc = new WebClient();
        var proxies = wc.DownloadString(@"http://proxy-ip-list.com/download/free-proxy-list.txt");
        Console.WriteLine("http://" + proxies.Split(';')[5]);
        Console.ReadLine();
    }
}

我很困惑......

我逐个字符地尝试了打印机。 我尝试在写入之前将字符串分配给变量。 我都试过了,怎么回事?

Console.WriteLine("http://" + "182.255.46.123:8080"); 工作...

【问题讨论】:

  • 我运行了这个确切的代码。我的工作正常。打印列表中的第 5 个代理....
  • 带有 HTTP 前缀?
  • 是的。不过,我在没有 Console.ReadLine() 的情况下运行它。
  • 哇,你一定是个快速阅读者
  • 我使用了一个在线 C# 编译器,所以它实际上并没有使用命令提示符。似乎它也过滤掉了正确答案中列出的特殊字符。

标签: c# string console


【解决方案1】:

这是因为返回的字符串开头包含一个回车符:

proxies.Split(';')[5] = " \r182.255.46.123:8080"

你可以这样删除它:

Console.WriteLine("http://" + proxies.Split(';')[5].Replace("\r", "").Trim());

【讨论】:

  • 我们真的需要'Replace("\r", "")'吗?只需 Trim() 就足够了 - 它将删除开头和结尾的所有空格。
  • 技术上,Trim 将删除所有空白字符,包括“\r”。这只是为了明确示例。而且,我想,如果“\r”在非空白字符之后。 :)
  • 感谢 Rufus 提供的快速详细信息... :-)
  • 我最终只使用了修剪*
【解决方案2】:

试试这个:

using System;
using System.Text.RegularExpressions;
using System.Net;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            WebClient wc = new WebClient();
            var proxies = wc.DownloadString(@"http://proxy-ip-list.com/download/free-proxy-list.txt");
            var regex = new Regex(@"\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}:\d{1,5}");
            var match = regex.Matches(proxies);
            Console.WriteLine("http://" + match[3].Value);
            Console.ReadLine();
        }
    }
}

在请求结果内容发生变化的情况下最节省。

【讨论】:

    【解决方案3】:

    根据您的评论更新答案。您只需要 Trim() 删除开头和结尾的所有空格。

    using System;
    using System.Net;
    
    static class Program
    {
        public static void Main()
        {
            WebClient wc = new WebClient();
            var proxies = wc.DownloadString(@"http://proxy-ip-list.com/download/free-proxy-list.txt");
    
            Console.WriteLine("http://" + proxies.Split(';')[5].Trim());
    
            Console.ReadLine();
        }
    }
    

    【讨论】:

    • 这不是我想要做的。我只想打印http://182.255.46.123:8080
    • 对不起,您的问题最初并不清楚,我以为您想打印所有内容。从 IP 列表中,您想始终打印第一个?第一个来自奥地利,第二个没有任何国家。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多