【发布时间】:2012-09-05 09:12:08
【问题描述】:
我正在尝试使用 .NET 从有效网址中过滤掉无效网址。
我正在为此使用Uri.TryCreate() 方法。
语法如下
public static bool TryCreate(Uri baseUri,string relativeUri,out Uri result)
现在我正在这样做......
Uri uri = null;
var domainList = new List<string>();
domainList.Add("asas");
domainList.Add("www.stackoverflow.com");
domainList.Add("www.codera.org");
domainList.Add("www.joker.testtest");
domainList.Add("about.me");
domainList.Add("www.ma.tt");
var correctList = new List<string>();
foreach (var item in domainList)
{
if(Uri.TryCreate(item, UriKind.RelativeOrAbsolute, out uri))
{
correctList.Add(item);
}
}
我正在尝试上面的代码,我希望它能从列表中删除 asas 和 www.joker.testtest,但它没有。
有人可以帮我解决这个问题吗?
更新:
刚刚用 Uri.IsWellFormedUriString 尝试过,这也没有帮助。
更多更新
有效uri列表
- http://www.ggogle.com
- www.abc.com
- www.aa.org
- www.aas.co
- www.hhh.net
- www.ma.tt
无效uri列表
- asas
- 作为#@SAd
- this.not.valid
- www.asa.toptoptop
【问题讨论】:
-
您对有效 URI 的定义是什么?您的所有示例都是有效的 URI,但并非所有示例都是真正的 域。
-
您需要定义“无效”。如果“无效”意味着 URI 不存在,那么我的解决方案将起作用。如果“无效”表示“格式不正确”,则 O.D.解决方案就足够了。否则,您需要定义“无效”!
-
MUSEUM也是一个有效的顶级域。所以像“www.asa.MUSEUM”这样的东西是有效的吗?在这里检查 tlds:data.iana.org/TLD/tlds-alpha-by-domain.txt