【发布时间】:2011-06-17 15:24:40
【问题描述】:
如何检查 uri 字符串是否有效(可以将其提供给 Uri 构造函数)?
到目前为止,我只有以下方法,但出于显而易见的原因,我更喜欢一种不那么粗暴的方式:
Boolean IsValidUri(String uri)
{
try
{
new Uri(uri);
return true;
}
catch
{
return false;
}
}
我尝试了 Uri.IsWellFormedUriString,但它似乎并不喜欢你可以在构造函数中抛出的所有内容。例如:
String test = @"C:\File.txt";
Console.WriteLine("Uri.IsWellFormedUriString says: {0}", Uri.IsWellFormedUriString(test, UriKind.RelativeOrAbsolute));
Console.WriteLine("IsValidUri says: {0}", IsValidUri(test));
输出将是:
Uri.IsWellFormedUriString says: False
IsValidUri says: True
更新/回答
Uri 构造函数默认使用种类 Absolute。当我尝试使用 Uri.TryCreate 和构造函数时,这导致了差异。如果为构造函数和 TryCreate 匹配 UriKind,您确实会得到预期的结果。
【问题讨论】: