18

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

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

4

4 回答 4

42

您应该使用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);
}
于 2013-08-20T09:41:33.163 回答
11

使用 c# URI 类来表示您的 URI

然后使用uri.compare函数

于 2013-08-20T09:08:03.980 回答
1

很难知道您在这里所说的“匹配”究竟是什么意思,因为您只举了一个例子。在这种情况下,你可以做这样的事情。

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

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

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

于 2013-08-20T09:10:11.820 回答
1

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

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));
    }
于 2013-08-20T09:14:15.320 回答