您好我在C#中构建类似于webspider的东西。在我的研究中,我遇到了一个问题,我需要阻止链接是内部还是外部,入站或出站。所以我需要创建一个功能来为我做这项工作。所以我提出了以下功能,但我不确定它是否是最好的algorythm以完成该任务。所以我希望你对这个问题有所了解。
我认为链接前面没有http://或https://的链接是内部的 如果我有一个域http://www.blahblah.com那么像test这样的链接应该仍然是内部的,尽管事实上它在前面有http://,但像http://www.somethingelse.com/?var1=http://www.blahblah.com/test这样的链接是外部的,我正在检查第一个只有字母。
private Boolean checklinkifinternal(String link)
{
Boolean isinternal = false;
if (link.IndexOf("http://") == 0 || link.IndexOf("https://") == 0)
{
//Then probably external
if (link.IndexOf("http://" + UrlName) == 0 || link.IndexOf("https://" + UrlName) == 0 || link.IndexOf("http://www." + UrlName) == 0 || link.IndexOf("https://www." + UrlName) == 0)
{
isinternal = true;
}
}
else
{
isinternal = true;
}
return isinternal;
}
答案 0 :(得分:6)
Uri.Compare(new Uri("google.de"), new Uri("Google.de"), UriComponents.Host, UriFormat.SafeUnescaped, StringComparison.CurrentCulture);
这就是我从头顶说的话:):
答案 1 :(得分:1)
这取决于。如果您使用的是http URI,那么即使域名相同,也会将指向https URI的链接计为内部链接吗? (反之亦然。)你必须做出决定。
此外,您的算法不考虑本地文件系统(使用file://)。