我有一个用户文本块,我需要找到所有的网址并将其更改为超链接。例如,在以下块中,我需要将{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坐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
我是否必须拆分字符串,然后将每个单词与正则表达式匹配,如果找到匹配,我替换?但我认为有更好的方法,只是我无法弄明白。
Thanx寻求帮助。
Devang。
答案 0 :(得分:0)
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);
答案 1 :(得分:0)
Regex.Replace
将替换多次匹配给定模式的子字符串,因此无需先拆分字符串。
困难的部分是决定你想要匹配的URL作为URL。例如,如果要匹配与RFC 3987兼容的任何字符串,那么您的模式将变得非常复杂。
如果您的嵌入式网址不包含“http://”部分,则可能难以识别它们,因此您选择的模式将取决于您的输入文字。