Chcę porównać 2 adresy URL. Jaki jest najlepszy sposób na zrobienie tego?Najlepszy sposób na porównanie 2 adresów URL
Warunki: 1) Powinno to wykluczyć schemat http. 2) 'foo.com/a/b' i 'foo.com/a' powinny pasować.
Chcę porównać 2 adresy URL. Jaki jest najlepszy sposób na zrobienie tego?Najlepszy sposób na porównanie 2 adresów URL
Warunki: 1) Powinno to wykluczyć schemat http. 2) 'foo.com/a/b' i 'foo.com/a' powinny pasować.
używać C# URI class do reprezentowania URI
następnie użyć uri.compare funkcję
trudno jest wiedzieć, co właściwie znaczy „meczu” tutaj, ponieważ tylko dał jeden przykład. W takim przypadku możesz zrobić coś takiego.
bool UrlsMatch(string first, string second)
{
return !(first.ToLower().StartsWith("http://")) && first.ToLower().StartsWith(second.ToLower());
}
chociaż możesz również chcieć sprawdzić je na odwrót.
Można również użyć Uri.Compare, ale nie znając dokładnych wymagań dotyczących równości, trudno byłoby określić, czy jest on całkowicie odpowiedni, czy nie.
jeśli mogę zrozumieć, co staramy się osiągnąć wówczas funkcję w tym celu może być coś takiego
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));
}
należy użyć metody Uri.Compare.
Oto przykład porównania dwóch identyfikatorów URI z różnymi schematami.
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);
}
Zrobiłem wyszukiwanie google. Ale nie był w stanie znaleźć dobrego sposobu na zrobienie tego. – hegdesachin
@hegdesachin Musisz być pierwszą osobą, która spróbuje porównać adresy URL. Nie ma dobrych sposobów na Google, oprócz pierwszego wyniku: [link] (http://msdn.microsoft.com/en-us/library/system.uri.compare.aspx) – Artless
przez dźwięki tego "" a ". Zawiera ("b") 'wystarczy – Sayse