Как извлечь все URL из текста в C # (asp.net MVC) - PullRequest
1 голос
/ 05 августа 2011

Я создаю приложение asp.net mvc, в котором есть текстовое поле, в котором пользователи могут вводить текст, который может включать некоторые URL-адреса, на сервере я хочу проанализировать этот текст и извлечь все доступные в нем URL-адреса.

возможный текст

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

Ответы [ 2 ]

3 голосов
/ 05 августа 2011

Как насчет этого:

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

Надеюсь, это поможет ...

РЕДАКТИРОВАТЬ: Извините, проверка не удалось .. Исправлено сейчас ...

1 голос
/ 05 августа 2011

Сначала вы хотите установить разделитель.Похоже, вы используете запятые, поэтому это должно быть достаточно просто.

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

Затем вы можете просмотреть каждую строку и проверить, нужно ли обрезать URL.1006 * Теперь вы можете отобразить каждую строку в массиве!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...