如何判断uri字符串是否有效(是否可以将其提供给uri构造函数)?
到目前为止,我只有以下几点,但出于明显的原因,我更喜欢不那么 brute 的方式:
Boolean IsValidUri(String uri)
{
try
{
new Uri(uri);
return true;
}
catch
{
return false;
}
}
我try 了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
Update/Answer
Uri构造函数默认使用绝对类.当我try 使用Uri时,这导致了不一致.TryCreate和构造函数.如果将构造函数和TryCreate的UriKind都匹配,则会得到预期的结果.