100分求用正则表达式把以http://开头的文本替换为超链接。
论坛中如果有人发的帖子中有如下的文本:http://www.bizsofts.com ,我想把这段文本替换为:<a href="http://www.bizsofts.com" target="_blank">http://www.bizsofts.com</a>,也就是给文本加上超链接,一点击就可以打开链接,而不用把文本拷贝到IE的地址栏再打开,应该怎么做?
就好像在Outlook中把http://开头的文本自动加上下划线一样,可以点击直接链接到相应的地址。
问题点数:100、回复次数:8Top
1 楼zjliujun(刘军)回复于 2006-03-31 17:42:26 得分 0
如何判断链接的下划线到那里结束也是一个问题。Top
2 楼hyj_828(水梦)回复于 2006-03-31 17:45:30 得分 0
(http://.+ $)Top
3 楼liuxiaoyi666(MSMVP 小猪妹荣誉马甲之八卦兔子)回复于 2006-03-31 17:47:42 得分 0
匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*Top
4 楼zjliujun(刘军)回复于 2006-03-31 17:48:07 得分 0
请给出全部的C#代码。Top
5 楼zjliujun(刘军)回复于 2006-03-31 17:52:21 得分 0
我是在一个函数中写的,但实现不了,是哪里错了:
public string ProcessLink(object Content)
{
string strContent = Content.ToString();
Regex my= new Regex(@"(\[URL\])(http:\/\/.[^\[]*)(\[\/URL\])",RegexOptions.IgnoreCase);
strContent=my.Replace(strContent,@"<A HREF=""$2"" TARGET=_blank>$2</A>");
string newContent = strContent;
return newContent;
}Top
6 楼fancyf(凡瑞)回复于 2006-03-31 17:58:13 得分 100
Regex regex = new Regex(
@"(http:\/\/([\w.]+\/?)\S*)",
RegexOptions.IgnoreCase
| RegexOptions.CultureInvariant
| RegexOptions.IgnorePatternWhitespace
| RegexOptions.Compiled
);
string content = "http://www.bizsofts.com http://www.bizsofts1.com http://www.bizsofts2.com/abc";
content = regex.Replace(content, "<a href=\"$1\" target=\"_blank\">$1</a>");
Console.WriteLine(content);
输出结果:
<a href="http://www.bizsofts.com" target="_blank">http://www.bizsofts.com</a> <a
href="http://www.bizsofts1.com" target="_blank">http://www.bizsofts1.com</a> <a
href="http://www.bizsofts2.com/abc" target="_blank">http://www.bizsofts2.com/ab
c</a>Top
7 楼zjliujun(刘军)回复于 2006-03-31 18:01:28 得分 0
马上测试一下Top
8 楼zjliujun(刘军)回复于 2006-03-31 18:16:21 得分 0
fancyf(凡瑞) 是正解,真是高手,100全给你。Top




