给定一个字符串列表,我有兴趣找出哪些是有效的http://
URL。我的第一种方法是使用正则表达式并执行以下操作:
var urls = strs.Where(str => urlRegex.matches(str));
有没有更惯用/自然/简单的方法来做到这一点?
给定一个字符串列表,我有兴趣找出哪些是有效的http://
URL。我的第一种方法是使用正则表达式并执行以下操作:
var urls = strs.Where(str => urlRegex.matches(str));
有没有更惯用/自然/简单的方法来做到这一点?
是的,我会使用Uri.TryCreate,然后测试成功解析 URI 的 Scheme 属性以确保它是 HTTP。
但是,如果您要查找的 URI 是较大文本块的子字符串,则可以使用正则表达式。
我会选择基于正则表达式的方法,你的方法对我来说很好
您可以使用System.Uri 类中内置的解析来验证 URL。这具有正确处理 URL 中包含的查询字符串的好处,并且应该能够解析 .Net 可以用作 Url 的任何字符串。
在使用 TryCreate 尝试解析每个字符串后,检查 Uti.Scheme 属性是否为 HTTP uri(否则文件系统路径也会通过过滤器)。