如何检查字符串是否是有效的HTTP URL?
还有的Uri.IsWellFormedUriString
和Uri.TryCreate
方法,但他们似乎回到true
文件路径等如何检查字符串是否是有效的HTTP URL?
如何检查字符串是否是用于输入验证目的的有效(不一定有效)HTTP URL?
试试这个验证的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);
经过Uri.TryCreate
您可以检查Uri.Scheme
以查看它是否是HTTP(s)。
这将返回布尔:
Uri.IsWellFormedUriString(a.GetAttribute("href"), UriKind.Absolute)
我认为OP特别提到,他不喜欢Uri.IsWellFormedUriString,因为它为文件路径提供了真实性。你有解决这个问题的办法吗? – Isantipov
Uri uri = null;
if (!Uri.TryCreate(url, UriKind.Absolute, out uri) || null == uri)
return false;
else
return true;
这里url
是你必须测试的字符串。
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
}
这似乎没有处理www网址。 IE:www.google.com显示为无效。 –
@ZauberParacelsus“www.google.com”无效。 URL的意思应该以“http”,“ftp”,“file”等字符开头。字符串应该是“http:// www.google.com”,不得有空格 –
此方法既http和https罚款。只有一行:)
if (Uri.IsWellFormedUriString("https://www.google.com", UriKind.Absolute))
如果这种阅读uriResult.Scheme而不是uriName.Scheme?我正在使用TryCreate的重载,它接受String而不是Uri,因为它是第一个参数。 –
您可能需要向uriResult.Scheme ==添加更多条件...具体为https。这取决于你需要什么,但是这个小小的改变是我需要完美的工作。 – Fiarr
要明确每个@ Fiarr的评论,除了HTTP URL之外,需要考虑HTTPS的“小改动”是:'bool result = Uri.TryCreate(uriName,UriKind.Absolute,out uriResult)&& uriResult.Scheme == Uri .UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps;' – J0e3gan