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

本文关键字:asp net mvc url 文本 提取 | 更新日期: 2023-09-27 18:04:37

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

<<p> 可能的文本/strong>
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

期望输出数组

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

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

这个怎么样:

string[] domains = text.Replace(" ",",").Replace("http://", "").Replace("www.", "").Replace("ftp://", "").Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

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

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'-'._'?',''/'''+&amp;%'$#'=~])*[^'.',')'('s]$";
    Regex reg = new Regex(pattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
    return reg.IsMatch(url);
}

希望对你有帮助。

编辑:对不起,验证失败。现在修复它…

首先,需要设置分隔符。看起来你在用逗号,所以应该很容易。

var urlArray = inputString.Split(',', StringSplitOptions.RemoveEmptyEntries)

然后你可以遍历每个字符串并检查url是否需要修剪。

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

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