我正在尝试比较 2 个网址,例如
http://www.example.com
和 http://example.com
,期望输出结果是它们相似。
我使用 Uri 类来表示 url,并使用 Uri.Compare 使用指定的比较规则来比较两个 Uris 的指定部分。
Uri uri1 = new Uri("http://www.example.com");
Uri uri2 = new Uri("http://example.com");
var result =
Uri.Compare(
uri1,
uri2,
UriComponents.NormalizedHost | UriComponents.PathAndQuery,
UriFormat.SafeUnescaped, StringComparison.OrdinalIgnoreCase
);
Console.WriteLine (result);
我已经分别使用
UriComponents.Host
和 UriComponents.NormalizedHost
进行了测试,它们分别匹配主机数据和规范化主机,但它们似乎都比较网址的整个域名(www.example.com 与example.com)在这种情况下。请参阅 UriComponents Enum 了解更多信息。
有没有办法使用 Uri.Compare 来比较这些(带有 www 和 无 www 的网址)?如果不是,还有什么其他解决方案适合这种情况?
如果 Uri.Compare 不起作用。可以获取字符串格式的 url,并使用正则表达式 (Regex) 进行比较。 https://learn.microsoft.com/en-us/dotnet/api/system.text.regularexpressions.regex?view=net-8.0
Uri 类可能有解决方案,但我对这个类及其功能不太熟悉。