Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 7 years ago.
Improve this question
I want to compare 2 URLs. Whats the best way to do this?
Conditions:
1) It should exclude the http scheme.
2) 'foo.com/a/b' and 'foo.com/a' should be a match.
You should use the Uri.Compare method.
Here is an example to compare two URI's with different schemes.
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);
}
use the c# URI class to represent your URIs
then use the uri.compare function
It's difficult to know what you actually mean by "match" here, since you only gave one example. In this case you could do something like this.
bool UrlsMatch(string first, string second)
{
return !(first.ToLower().StartsWith("http://")) && first.ToLower().StartsWith(second.ToLower());
}
although you may also want to check them the other way around as well.
You could also use Uri.Compare, but without knowing your exact requirements for equality it would be tricky to know if it is completely suitable or not.
if i understand what you are trying to accomplish then a function to do this can be something like this
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));
}