比较2个url的最佳方式

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

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

您应该使用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函数

如果我理解你想要完成的任务,那么执行此操作的function可能是这样的

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

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

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

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

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