是否有任何类方法来测试大小写不同的两个 url 是否相同?
这些是相同的:
- www.mysite.com
- 万维网
这些不一样:
- www.youtube.com/v=AAAABBBB
- www.youtube.com/v=aaaaBBBB
编辑我认为 Uri 课程还不够
这两个是相同的链接
- stackoverflow.com/questions
- stackoverflow.com/QUESTIONS
请注意,这www.youtube.com/v=ObgtZwwiKqg
是一个不正确的 URL。正确的 URL 包含查询符号,例如www.youtube.com/watch?v=ObgtZwwiKqg
。
如何忽略查询路径并仅比较查询参数?如果您的 URL 中有查询?
,那么您可以剥离所有内容以进行查询。如果没有,您至少可以使用UriPartial.Authority
.
例如:
Uri a = new Uri("http://www.google.com/subdirectory?v=aaBB");
Uri b = new Uri("http://www.Google.com/SUBdirectory?v=AAbb");
string aParams = a.ToString().Replace(a.GetLeftPart(UriPartial.Path), String.Empty);
string bParams = b.ToString().Replace(b.GetLeftPart(UriPartial.Path), String.Empty);
if (aParams.Equals(bParams)) // with case
{
// they are equal
}
需要使用 Uri 类,并检查 AbsolutePath 属性
string url1 = "http://www.youtube.com/v=AAAABBBB";
string url2 = "http://www.youtube.com/v=aaaaBBBB";
Uri u1 = new Uri(url1);
Uri u2 = new Uri(url2);
if(string.Compare(u1.Host, u2.Host, StringComparison.CurrentCultureIgnoreCase) == 0)
{
if(u1.AbsolutePath == u2.AbsolutePath)
Console.WriteLine("Equals");
else
Console.WriteLine("Not equal path");
}
else
Console.WriteLine("Not equal host");