Замените URL живыми ссылками, используя C # - PullRequest
1 голос
/ 25 июля 2011

У меня есть блок пользовательского текста, где мне нужно найти все веб-адреса и изменить их на гиперссылки.Например, в следующем блоке мне нужно заменить www.google.com на <a href="www.google.com">www.google.com</a>, а www.yahoo.com на <a href="www.yahoo.com">www.yahoo.com</a>.

Lorem ipsum dolor sit www.google.com amet, должное назначение elitwww.yahoo.com sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Ut wisi enim ad minim veniam, упражнение quis nostrud ullamcorper suscipit lobortis nisl ut aliquip

Нужно ли разбивать строку, а затем сопоставлять каждое слово с регулярным выражением, и если совпадение найдено, я заменяю?Но я думаю, что есть лучший подход к этому, просто я не могу понять это.

Спасибо за помощь.

Деванг.

Ответы [ 2 ]

0 голосов
/ 25 июля 2011

Regex.Replace заменит несколько вхождений подстрок, соответствующих заданному шаблону, поэтому нет необходимости сначала разбивать строку.

Сложная часть - это решить, что вы хотите сопоставить как URL,Например, если вы хотите сопоставить любую строку, совместимую с RFC 3987 , то ваш шаблон будет довольно сложным.

Если ваши встроенные URL не содержат "http://", тогда их будет трудно определить, поэтому выбранный вами шаблон будет зависеть от вашего входного текста.

0 голосов
/ 25 июля 2011
string s = "Lorem ipsum dolor sit www.google.com amet, consectetuer adipiscing elit, www.yahoo.com sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip";

string newS = Regex.Replace(s, "((https?://)?www\\.[^\\s]+)", "<a href=\"$1\">$1</a>");

Console.WriteLine(newS);
...