【问题标题】:Best way to compare 2 urls [closed]比较2个网址的最佳方法[关闭]
【发布时间】:2013-08-20 09:04:09
【问题描述】:

我想比较 2 个网址。最好的方法是什么?

条件: 1)它应该排除http方案。 2) 'foo.com/a/b' 和 'foo.com/a' 应该是匹配的。

【问题讨论】:

  • 我进行了谷歌搜索。但是没找到好的方法
  • @hegdesachin 您必须是第一个尝试比较网址的人。 Google 上没有什么好的方法,除了第一个结果:link
  • 听着"a".Contains("b")就够了

标签: c# string-comparison


【解决方案1】:

您应该使用Uri.Compare 方法。

这是一个比较两个具有不同方案的 URI 的示例。

public static void Test()
{
    Uri uri1 = new Uri("http://www.foo.com/baz?bar=1");
    Uri uri2 = new Uri("https://www.foo.com/BAZ?bar=1");

    var result = Uri.Compare(uri1, uri2, 
        UriComponents.Host | UriComponents.PathAndQuery, 
        UriFormat.SafeUnescaped, StringComparison.OrdinalIgnoreCase);

    Debug.Assert(result == 0);
}

【讨论】:

    【解决方案2】:

    使用 c# URI class 来表示你的 URIs

    然后使用uri.compare函数

    【讨论】:

      【解决方案3】:

      在这里很难知道“匹配”的真正含义,因为您只举了一个例子。在这种情况下,您可以这样做。

      bool UrlsMatch(string first, string second)
      {
          return !(first.ToLower().StartsWith("http://")) && first.ToLower().StartsWith(second.ToLower());
      }
      

      尽管您可能还想反过来检查它们。

      您也可以使用 Uri.Compare,但在不知道您对相等性的确切要求的情况下,很难知道它是否完全适合。

      【讨论】:

        【解决方案4】:

        如果我了解您要完成的工作,那么执行此操作的功能可能是这样的

        bool Compare(string url1, string url2)
            {
                var str1 = url1.Replace("http://", String.Empty).ToLower();
                var str2 = url2.Replace("http://", String.Empty).ToLower();
        
                return (str1.Contains(str2) || str2.Contains(str1));
            }
        

        【讨论】:

        • 你可以只返回你的 if 参数,replace 也返回一个新字符串并且不会替换现有的
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-20
        • 1970-01-01
        • 2010-09-13
        • 1970-01-01
        相关资源
        最近更新 更多