Как проверить, является ли строка допустимым URL-адресом HTTP?
есть Uri.IsWellFormedUriString
и Uri.TryCreate
методы, но они, кажется, вернуть true
для пути к файлам и т. д.
Как проверить, является ли строка допустимым (не обязательно активным) HTTP-URL для целей проверки ввода?
6 ответов
попробуйте проверить http url (uriName
- это URI, который вы хотите проверить):
Uri uriResult;
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult)
&& uriResult.Scheme == Uri.UriSchemeHttp;
или, если вы хотите принять как HTTP, так и HTTPS-адреса как действительные (в комментарии J0e3gan):
Uri uriResult;
bool result = Uri.TryCreate(uriName, UriKind.Absolute, out uriResult)
&& (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
этот метод отлично работает как в http, так и в https. Всего одна строчка:)
if (Uri.IsWellFormedUriString("https://www.google.com", UriKind.Absolute))
public static bool CheckURLValid(this string source)
{
Uri uriResult;
return Uri.TryCreate(source, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp;
}
использование:
string url = "htts://adasd.xc.";
if(url.CheckUrlValid())
{
//valid process
}
обновление: (одна строка кода) Спасибо @GoClimbColorado
public static bool CheckURLValid(this string source) => Uri.TryCreate(source, UriKind.Absolute, out Uri uriResult) && uriResult.Scheme == Uri.UriSchemeHttps;
использование:
string url = "htts://adasd.xc.";
if(url.CheckUrlValid())
{
//valid process
}
Uri uri = null;
if (!Uri.TryCreate(url, UriKind.Absolute, out uri) || null == uri)
return false;
else
return true;
здесь url
- это строка, которую вы должны проверить.