Использование Uri.TryCreate может иметь некоторые проблемы с относительным Uris, с такой строкой "/folder/ndomht.com.m\/sx.r:erp://" TryCreate возвращает true, поэтому я создаю этот метод расширения используя IsWellFormedUriString и TyrCreate, я не уверен, что TryCreate необходим, с моими маленькими тестами я получаю те же результаты с TryCreate или без
public static bool IsUri(this string source) {
if(!string.IsNullOrEmpty(source) && Uri.IsWellFormedUriString(source, UriKind.RelativeOrAbsolute)){
Uri tempValue;
return (Uri.TryCreate(source, UriKind.RelativeOrAbsolute, out tempValue));
}
return (false);
}
Пример
address= "http://www.c$nbv.gob.mx"
if(address.IsUri()){
//returns false
}
address= "http://www.cnbv.gob.mx"
if(address.IsUri()){
//returns true
}
address= "http://www.cnbv.gob.mx:80"
if(address.IsUri()){
//returns true
}
address= "/directory/path"
if(address.IsUri()){
//returns true
}
address= "~re#l|ativ[ainco#recta\car:.\peta"
if(address.IsUri()){
//returns false
}