如何检查 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 构造函数默认使用 kind Absolute。当我尝试使用 Uri 时,这导致了一个差异。TryCreate 和构造函数。如果在构造函数和 TryCreate 中都匹配 UriKind,就会得到预期的结果。