上一篇:ASP.NET 2.0移动开发入门之使用模拟器 >>
在ASP.NET中自动给URL加上超链接
作为一个程序员,在完成设计后还要根据程序的情况以及用户的反映不断对程序进行改进,这样才能不断地完善自己的作品。我在制作完软件商务网 http://www.bizsofts.com 的论坛后,发现人们总喜欢在帖子中加上各种有用的URL链接或Email地址。而我当初设计时没有考虑到这一点,使得这些URL链接或Email地址只能以文字的形式而并不是以超链接的形式显示,其它浏览帖子的人还必须把这些URL链接拷贝到浏览器中或把Email地址拷贝到Outlook中才能转到相应的链接地址或发送电子邮件到相应的Email地址。
发现这个问题后,我就着手进行解决。首先是从网上查找有关这方面的现在代码,可惜的是,在搜索引擎上反复查找也没有发现这方面的文章。后来我一想,干脆我自己用ASP.NET编写一个。
要想自动显示超链接的关键在于如何能正确识别超链接,毫无疑问的,最有效的方法是用正则表达式。正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式,描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。.NET基础类库中包含有一个名字空间和一系列可以充分发挥规则表达式威力的类,用它就可以自动探测出文字中的URL链接或Email地址。下面我具体讲讲如何用ASP.NET(C#)一步步实现我们的目的:
首先,要想在ASP.NET(C#)中使用正则表达式就必须把 System.Text.RegularExpressions 这个命名空间包含进来:
| using System.Text.RegularExpressions; |
第二步是用正则表达式识别URL超链接:
| Regex urlregex = new Regex(@"(http:\/\/([\w.]+\/?)\S*)", RegexOptions.IgnoreCase|RegexOptions.Compiled); |
这里的代码是用正则表达式识别Email地址:
| Regex emailregex = new Regex(@"([a-zA-Z_0-9.-]+\@[a-zA-Z_0-9.-]+\.\w+)", RegexOptions.IgnoreCase|RegexOptions.Compiled); |
第三步,当程序已经识别出URL超链接或Email地址后,必须用<a href=...>超链接</a>对这些超链接进行替换,这样才能把这些文字显示为链接的形式。我这里把它们全部包含在函数中:
| private void Button1_Click(object sender, System.EventArgs e) { string strContent = InputTextBox.Text; Regex urlregex = new Regex(@"(http:\/\/([\w.]+\/?)\S*)", RegexOptions.IgnoreCase| RegexOptions.Compiled); strContent = urlregex.Replace(strContent, "<a href=\"\" target=\"_blank\"></a>"); Regex emailregex = new Regex(@"([a-zA-Z_0-9.-]+\@[a-zA-Z_0-9.-]+\.\w+)", RegexOptions.IgnoreCase| RegexOptions.Compiled); strContent = emailregex.Replace(strContent, "<a href=mailto:></a>"); lbContent.Text += "<br>"+strContent; } |
通过以上几步,你就可以在网页上自动显示超链接以及Email地址了。欢迎大家下载本示例的源代码,以及到http://www.bizsofts.com 的论坛上观看实际效果。
下一篇:ASP.NET Atlas对JavaScript的扩展 >>
相关文章:
- · 一道Google中国挑战赛竞赛题的解法
- · ASP.NET入门随想之开卷有益
- · ASP.NET入门随想之瘦子与胖子的故事
- · .NET 2.0远程传输数据集的优化方法
- · 英特尔:对驱动程序软件漏洞没必要担忧
- · 苹果发布Mac OS升级版 修复60个软件瑕疵
- · 边走边看 手机应用软件开发平台介绍
- · Windows Mobile 5.0最新体验
- · 解读VC++编程中的文件操作API和CFile类
- · 利用VC++实现局域网实时视频传输
- · 使用VC6.0实现窗口的任意分割
- · 抢占网络工具焦点阵地 几大浏览器纷纷变脸
- · 双缓冲技术及其在VC的GDI环境下的实现
- · VC++实现动画弹出/弹入式窗口
- · VC++中实现以复杂线条为基础的图形绘图
- · VC++实现工具栏上添加平面组合框控件
- · C++箴言:考虑支持不抛异常的swap
- · Visual C++实现对计算机远程监控
- · VC与Matlab接口编程之Matcom安装配置
- · VC++中使用图形程序设计和动画技术
- · VC环境下三菱PLC与微机的串行通信
- · 在MFC下如何定义全局变量和全局函数
- · 用Visual C++实现排序算法大全
- · 辞旧迎新 WinFS未来的文件存储系统
- · Visual C++下对冒泡排序算法的改进
- · 系统变变变 Windows六则桌面应用技巧
- · 关于Windows系统待机、休眠的经典问答
- · Windows“高手”最常用的五个组合键
- · WinXp主题工具与修改全攻略
- · 体现电脑时尚 10大windows桌面应用技巧
- · 我的桌面,我的世界杯 打造体育类桌面
- · VC++编程实现广告窗口自动关闭
- · VC中利用CRC校验码为BMP图设置水印
- · COM接口在不同线程中的传递技巧两则
- · JFC/Swing活学活用之创建自定义图像组件
- · 专家称Java在WEB开发领域处境危险
- · 微软称浏览器每年都升级 IE8将在08年上市
- · 微软迎来迟到幸福 10天进账额相当于5年总和
