比较2个url的最佳方式

本文关键字:最佳 方式 url 2个 比较 | 更新日期: 2023-09-27 18:28:22

我想比较两个URL。做这件事最好的方法是什么?

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

比较2个url的最佳方式

您应该使用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);
}

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

然后使用uri.compare函数

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

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

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

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

如果我理解你想要实现的目标,那么实现这一目标的函数可以是类似的函数

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));
    }