【发布时间】:2012-10-05 19:54:29
【问题描述】:
我想要一个函数(在 VB.net 中),它传递一个字符串,然后使用正则表达式从该字符串中删除任何网址。它需要能够处理不同格式的 url,例如:
http://www.mysite.com
https://www.mysite.com
www.mysite.com
http://mysite.co.uk/mypage.htm
它还应该去除任何包含网址的锚标记。
基本上,它不应期望 url 以 http(或 https)为前缀,也不应期望有 www. 或 .com。
然后该函数返回原始字符串,尽管已删除任何网址。
到目前为止,我所能想到的只有以下内容(尽管这不适合包含在锚标签中的 url),我注意到如果我将 2 个 url 仅用一个空格分隔,它留下其中一个。
<Extension()> _
Public Function ReplaceWebUrls(ByVal s As String) As String
s = " " + s + " "
s = Regex.Replace(s, "([\s])(www\..*?|http://.*?)([\s])", " ")
s = Regex.Replace(s, "([\s])(https://.*?)([\s])", " ")
Return s.Trim()
End Function
VB.net 不是我通常使用的东西,但在这种情况下我别无选择,正则表达式不是我的强项:(
【问题讨论】:
-
那么“this.url”有什么作用呢?还是“本地主机/测试”?两者都可以是有效的 URI。事实上,我已将本地服务器设置为将“phd”作为演示文稿的有效 URI。
-
我不需要处理内部/本地 url。只需尝试处理大多数主流、常见的结构化地址类型即可。