0

是否有任何类方法来测试大小写不同的两个 url 是否相同?

这些是相同的:

  1. www.mysite.com
  2. 万维网

这些不一样:

  1. www.youtube.com/v=AAAABBBB
  2. www.youtube.com/v=aaaaBBBB

编辑我认为 Uri 课程还不够

这两个是相同的链接

  1. stackoverflow.com/questions
  2. stackoverflow.com/QUESTIONS
4

2 回答 2

1

请注意,这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
}
于 2013-06-11T14:47:54.007 回答
0

需要使用 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");
于 2013-06-11T14:50:24.543 回答