比较2个网址的最佳方式

时间:2013-08-20 09:04:09

标签: c# string-comparison

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

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

4 个答案:

答案 0 :(得分:26)

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

答案 1 :(得分:9)

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

然后使用uri.compare函数

答案 2 :(得分:1)

这里很难通过“匹配”来了解你的真正含义,因为你只给出了一个例子。在这种情况下,你可以做这样的事情。

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

虽然您可能也想以相反的方式检查它们。

您也可以使用Uri.Compare,但如果不知道您对相等的确切要求,那么知道它是否完全合适将会很棘手。

答案 3 :(得分: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));
    }