2013-06-11 81 views
0

是否有任何類方法來測試兩個不同套的url是否相同?比較網址區分大小寫

這些是相同的:

  1. www.mysite.com
  2. Www.MYsite.COm

這些都是不一樣的:

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

編輯 我不認爲Uri類是足夠

這兩個是相同的鏈接

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

了'Uri'類打破了這一切,。只需挑選你想要的作品並進行比較。 –

+1

小心:雖然stackoverflow.com/questions和stackoverflow.com/QUESTIONS可能指向相同的資源,但這在一般情況下並不正確。服務器上的路徑可能區分大小寫。 – nodots

回答

1

www.youtube.com/v=ObgtZwwiKqg是不正確的網址。正確的網址包含查詢符號,例如www.youtube.com/watch?v=ObgtZwwiKqg

如何忽略直到查詢的路徑並只比較查詢參數?如果您的網址中包含查詢?,那麼您可以將所有內容剝離查詢。如果沒有,你至少可以用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 
} 
+1

[最佳實踐](http://msdn.microsoft.com/en-us/library/dd465121(v = vs.110).aspx#recommendations_for_string_usage)建議使用String.Equals進行等式比較,而不是比較將String.Compare的值返回爲零。 – vvnurmi

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