我想比较两个URL,最好的方法是什么?
条件: 1)它应该排除http协议。 2)'foo.com/a/b'和'foo.com/a'应该被视为匹配。
我想比较两个URL,最好的方法是什么?
条件: 1)它应该排除http协议。 2)'foo.com/a/b'和'foo.com/a'应该被视为匹配。
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);
}
因为你只给了一个例子,所以很难知道你在这里实际意思是什么。在这种情况下,你可以像这样做。
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));
}
replace
返回一个新的字符串而不是替换原有的字符串。 - Sayse
"a".Contains("b")
就足够了。 - Sayse