首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在c# (asp.net mvc)中从文本中提取所有url

如何在c# (asp.net mvc)中从文本中提取所有url
EN

Stack Overflow用户
提问于 2011-08-04 21:23:56
回答 2查看 1.6K关注 0票数 1

我正在创建一个asp.net mvc应用程序,其中有一个文本框,用户可以在该文本框中键入可能包含一些urls的文本,在服务器上,我希望解析该文本并提取其中的所有urls。

可能的文本

代码语言:javascript
复制
abc.com, xyz.com, http://foo.com
baar.com 
http://baz.com, www.foobar.com
mosso.com
http://subfoo.foo.com
bar.baz.com
foobar.net baaz2.com  morebaaz.com

期望输出阵列

代码语言:javascript
复制
abc.com
xyz.com
foo.com 
baar.com
baz.com
foobar.com
mosso.com
subfoo.foo.com
bar.baz.com   
foobar.net 
baaz2.com  
morebaaz.com
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-04 21:36:08

这个怎么样:

代码语言:javascript
复制
string[] domains = text.Replace(" ",",").Replace("http://", "").Replace("www.", "").Replace("ftp://", "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

然后,您可以检查每个字符串是否有一个有效的url。

代码语言:javascript
复制
public static bool isValidUrl(string url)
{
    string pattern = @"^[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*[^\.\,\)\(\s]$";
    Regex reg = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
    return reg.IsMatch(url);
}

希望能帮上忙..。

编辑:对不起,现在验证failed..Fixed它.

票数 3
EN

Stack Overflow用户

发布于 2011-08-04 21:35:01

首先,要设置分隔符。看起来你用的是逗号,所以应该很简单。

代码语言:javascript
复制
var urlArray = inputString.Split(',', StringSplitOptions.RemoveEmptyEntries)

然后,您可以循环遍历每个字符串,并检查是否需要对url进行裁剪。

代码语言:javascript
复制
foreach (var urlString in urlArray)
{
    if (urlString.Contains("http://")) // or other things you want to filter out
    {
        urlString = urlString.Substring(urlString.IndexOf("http://") + 7)
    }
}

现在可以显示数组中的每个字符串了!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6948698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档