最佳URLvalidation
我使用下面的代码来检查URLvalidation:
public static bool CheckURLValid(string strURL) { Uri uriResult; return Uri.TryCreate(strURL, UriKind.Absolute, out uriResult) && uriResult.Scheme == Uri.UriSchemeHttp; }
下面的结果应该显示为true ,但不知何故它有自己的模式来validationurl:
false :google.com
是的 : http : //www.google.com
false : https : //www.google.com.my/webhp?sourceid = chrome-instant&ion = 1&espv = 2&es_th = 1&ie = UTF-8’newwindow = 1&q = check%20if%20valid%20url%20c%23
是的 : https : //stackoverflow.com/questions/ask
即时通讯使用c#,如何增强此检查urlvalidation更准确?
您的CheckURLValid正在返回您告诉它的内容。
要在所有4个URL上返回True是问题
false:google.com
这是一个相对URL,你已经指定了UriKind.Absolute,这意味着这是错误的。
false: https : //www.google.com.my/webhp?sourceid = chrome-instant&ion = 1&espv = 2&es_th = 1&ie = UTF-8’newwindow = 1&q = check%20if%20valid%20url%20c%23
这是一个httpS(安全)url,您的方法说
&& uriResult.Scheme == Uri.UriSchemeHttp;
这将限制您只有http地址(非安全)
要获得您想要的结果,您需要使用以下方法:
public static bool CheckURLValid(string strURL) { Uri uriResult; return Uri.TryCreate(strURL, UriKind.RelativeOrAbsolute, out uriResult); }
另一种方法是使用
Uri.IsWellFormedUriString(strURL, UriKind.RelativeOrAbsolute);
而不是重新实现所有准备就绪的function。 如果你想把它包装成你自己的CheckUrlValid我将使用以下内容:
public static bool CheckURLValid(string strURL) { return Uri.IsWellFormedUriString(strURL, UriKind.RelativeOrAbsolute); ; }
主要问题是大多数字符串都是有效的相对URL,所以我会避免使用UriKind.RelativeOrAbsolute,因为google.com是一个无效的url。 大多数Web浏览器以静默方式将HTTP://添加到字符串中,以使其成为有效的URL。 HTTP://google.com
是一个有效的url。
你可以试试
var isUrl = Uri.IsWellFormedUriString(strURL, UriKind.RelativeOrAbsolute);
它会在您在问题中写入的所有四个字符串返回true 。
这是不使用Regex的最佳解决方案:
(请注意,例如仅使用“IsWellFormedUriString”将为“//”返回true)
public static bool IsValidUrl(string url) { if (url == null) { return false; } try { Uri uriResult = new Uri(url); return Uri.IsWellFormedUriString(url, UriKind.RelativeOrAbsolute); } catch { return false; } }
对于unit testing,您可以检查我的function获得良好结果的链接 。
上述就是C#学习教程:最佳URLvalidation分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/983748.html