C# 比较2个URL的最佳方法

C# 比较2个URL的最佳方法,c#,string-comparison,C#,String Comparison,我想比较两个网址。最好的方法是什么 条件: 1) 它应该排除http方案。 2) “foo.com/a/b”和“foo.com/a”应该匹配。使用c来表示URI 然后使用函数这里很难知道“匹配”的真正含义,因为您只给出了一个示例。在这种情况下,你可以这样做 bool UrlsMatch(string first, string second) { return !(first.ToLower().StartsWith("http://")) && first.ToLowe

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

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

使用c来表示URI


然后使用函数

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

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));
    }
你应该使用这个方法

下面是一个比较两个具有不同方案的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);
}

我用谷歌搜索了一下。但却找不到一个好办法it@hegdesachin您必须是第一个尝试比较URL的人。Google上没有好的方法,除了第一个结果:从声音上看,a.Contains(“b”)足够了,您可以只返回if参数,也可以返回一个新字符串,而不替换现有的字符串