代码之家  ›  专栏  ›  技术社区  ›  alexn

C屏幕刮刀-处理长URI

  •  0
  • alexn  · 技术社区  · 15 年前

    我正在构建一个HTML屏幕scraper,它解析URL,然后将其与一组其他URL进行比较。

    比较是通过uri.absoluteuri或uri.host完成的。

    我的问题是,当我创建一个新的URI(new uri(url))时,当URL太长或包含多个斜杠时,会抛出一个uriformatException。

    由于我的预定义URL集包含多个(到)长的URL,所以我不能只使用子字符串来获取URL的一部分。

    最好的方法是什么?

    谢谢

    1 回复  |  直到 15 年前
        1
  •  1
  •   Espo    15 年前

    你可以使用 Uri.TryCreate 在您之前检查URI是否有效 new 它。

    你不应该在一个网址上得到一个例外,这是这么短。以下程序在VS2008上运行良好:

    static void Main(string[] args)
    {
        Uri uri = new Uri("http://stackoverflow.com/questions/1298985/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/c-screen-scraper-handle-long-uris/");
        Uri uri2 = new Uri("http://stackoverflow.com/questions/1298985/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/1/");
        Console.ReadLine();
    }