当前位置: 首页 > 编程日记 > 正文

asp.net实现在网页上自动显示超链接以及Email地址

人们总喜欢在帖子中加上各种有用的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地址了

转载于:https://www.cnblogs.com/Nina-piaoye/archive/2007/10/30/943291.html

相关文章:

用开放地址法中的线性探查法解决冲突实现哈希表的运算

为了更深的理解哈希算法,自己写了用开放地址法中的线性探查法解决冲突实现哈希表的运算。 /*** Created by lirui on 14-8-13.* 用开放地址法中的线性探查法解决冲突实现哈希表的运算。*/ public class MyHashSearch {public static final int SIZE 10;public sta…

Re: 求助:5道算法题

http://www.newsmth.net/frames.html发信人: cutepig (cutepig), 信区: Algorithm标 题: 求助:5道算法题发信站: 水木社区 (Sat Nov 10 18:25:06 2007), 站内1)given a integer, output its previous and next neighbor number which has the same number of bit 1…

Linux下des对称性加密

最近对接公安审计一些经历 对方的需求: 打成zip包对zip包进行des-cbc对称性加密,使用约定好的 -K和-iv值比如 -K "abcd$#!" -iv "efgh$#!"加密后做base64编码起初是想尝试用 php 去做,经过一阵折腾之后发现,p…

在软件中常用的“撤销”操作,其本质是“栈”!

本文介绍了栈的定义与操作并利用顺序表和链表实现了栈这种常用的数据结构。

用拉链法实现哈希算法的运算

package lirui.find;import java.util.LinkedList;/*** Created by lirui on 14-8-13.* 用拉链法实现哈希算法的运算*/ public class MyHashSearch2 {public static final int SIZE 10;public static MyHashElement[] hashtable new MyHashElement[SIZE];// 记录hash表中的数…

C#图片处理常见方法性能比较

在.NET编程中,由于GDI的出现,使得对于图像的处理功能大大增强。在文通过一个简单黑白处理实例介绍在.NET中常见的图片处理方法和原理并比较各种方法的性能。 黑白处理原理:彩色图像处理成黑白效果通常有3种算法; (1).最大值法: 使…

软件中常用的“发送邮件”、“打印文档”,其本质是“队列”!

本图文详细介绍了顺序队列、循环队列、链队列的实现过程。

二分查找的循环实现和递归实现

自己实现了二分查找的循环实现和递归实现 说明:二分查找适用于顺序存储结构,不适于链式存储结构,是一个高效的查找方法。虽然折半查找效率高,但是要排序,排序本身是一种很费时的运算。要求传入的表是有序的。二分查找的…

CentOS6.8 编译安装LNMP

思路:根据Linux系统以及公司网站系统的信息,选择合适的安装包进行安装 一、查看系统信息 # uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # grep MemTotal /proc/meminfo # 查看内…

js入门·循环与判断/利用函数的简单实例/使用对象/列举对象属性的名称

1,列举对象属性的名称<script language"javascript">varobjnewObject();obj.a"您好&#xff0c;我是田洪川";obj.b"你是田洪川咋的&#xff0c;不得了啊&#xff1f;";obj.c"西西&#xff0c;哈哈&#xff0c;我是属性 c ";//上…

Matlab与数据结构 -- 对向量的排序

本图文介绍了Matlab怎样实现对向量的排序。

HashMap和HashSet原理及底层实现

HashMap底层用哈希算法实现&#xff0c;下面看一下哈希算表的整体概括&#xff1a; 当map.put(“key”,”values”);的时候&#xff0c;底层是这样的&#xff1a; static final Entry<?,?>[] EMPTY_TABLE {}; transient Entry<K,V>[] table (Entry<K,V&g…

Study on Android【三】--Intent消息传递

在前面写Android的ContentProvider时候&#xff0c;可以看到那是基于观察者模式的一个消息传递方法。每一个Cursor、ContentResolver做为一个小的注册中心&#xff0c;相关观察者可以在这个中心注册&#xff0c;更新消息由注册中心分发给各个观察者。而在MFC或Winform中&#x…

Matlab与数据结构 -- 对矩阵的排序

本图文介绍了Matlab怎样实现对矩阵的排序。

Java_中快速获取系统时间

直接调用System的currentTimeMillis()即可&#xff01; long start System.currentTimeMillis(); System.out.println("Start time : "start);

servlet必知细节(一)

servlet必知细节&#xff08;一&#xff09; 今天复习了一下servlet&#xff0c;有过一些编程经验后&#xff0c;与最初学习servlet相比&#xff0c;对servlet理解的角度不同了&#xff0c;最初只是学习了如何写一个servlet&#xff0c;api怎么用&#xff0c;现在从更深处了解了…

办公室“暧昧”的几种结局。

暧昧结局一&#xff1a;以消散结尾 外贸公司职员小雨 p: [( I J( n, i/ L( L 那是我刚来这家公司的时候&#xff0c;参加面试时我就关注到其中一个面试我的男人长得不错&#xff0c;言谈举止也都很儒雅&#xff0c;所以第一面就留下了深刻印象。等到我被录取正式上班后…

Matlab与机器学习-- 数据的归一化

本文介绍了Matlab对数据归一化的处理函数mapminmax。

ASP.NET中的母版页

ASP.NET中的母版页 添加一个"母版页",使用<asp:ContentPlaceHolder>挖坑,新建的母版页已经自动设置了两个ContentPlaceHolder创建使用母版页的具体页面,WebSite是新建"Web窗体"的时候勾选"选择模板页",WebApplication是新建"Web内容窗…

servlet必知细节(二)--servlet执行过程

servlet必知细节(二)--servlet执行过程 我们知道&#xff0c;servlet没有main函数&#xff0c;那么&#xff0c;servlet是怎么调用的呢&#xff1f;实际上&#xff0c;servlet 是由tomcat调用的&#xff0c;tomcat调用servlet程序执行。由调用栈可以看到&#xff0c;当一个请求…

workerman源码分析之启动过程

2019独角兽企业重金招聘Python工程师标准>>> http://www.cnblogs.com/CpNice/p/4714182.html 转载于:https://my.oschina.net/yonghan/blog/898076

MD5加密方法

/**//// <summary>/// 16位MD5加密方法/// </summary>/// <param name"str">原文</param>/// <returns>密文</returns>publicstaticstringgetMd5(stringstr){ MD5CryptoServiceProvider md5 new MD5CryptoServiceProvider()…

如何教计算机认识手写数字(上)

本图文介绍了一种简单的教会计算机识别手写数字的方法。

servlet必知细节(三)-- DefaultServlet

servlet必知细节&#xff08;三&#xff09;-- DefaultServlet 缺省servlet&#xff1a;org.apache.catalina.servlets.DefaultServlet&#xff0c;作用是处理其他servlet处理不到的请求 我们知道&#xff0c;在我们工程的web.xml中&#xff0c;会配置servlet映射&#xff0c…

第五篇:Visual Studio 2008 Web开发使用的新特性

第五篇&#xff1a;Visual Studio 2008 Web开发使用的新特性 本篇翻译自MSDN。 .NET Framwork 3.5与Visual Studio 2008 包含很多新特性。AJAX的Web开发人员支持与综合查询语言&#xff08;LINQ&#xff09;是其中最重要的更新。此外还包含一些新的服务器端控件以及客户端对象库…

Jenkins使用Publish Over FTP Plugin插件上传FTP详解

一、安装插件【Publish Over FTP】 二、在【系统管理】->【系统设置】->【Publish over FTP】->点击【增加】按钮&#xff0c;增加一个要连接的FTP&#xff1a; FTP Server Name&#xff1a;FTP名字 Hostname&#xff1a;主机IP或者域名 Username&#xff1a;ftp登陆用…

Matlab与数据结构 -- 求向量或矩阵的最大值

本图文介绍了Matlab中求向量或矩阵最大值的方法。

web应用的绝对路径和相对路径

经常写web工程&#xff0c;就会涉及很多路径问题&#xff0c;今天复习下绝对路径和相对路径&#xff0c;以提醒自己下次不要以为路径问题头疼。 1.绝对路径和相对路径 相对路径&#xff1a;helloworld ./helloworld ../helloworld 这样的都是相对路径绝对路径&…

IE7外觀優化

众所周知&#xff0c;在Windows Vista的默认设置中&#xff0c;传统的文件菜单消失了&#xff0c;大部分过去通过菜单执行的任务如今由工具栏提供&#xff0c;或者在相应选择项的右键属性里。尽管这种改变使页面布局更简洁&#xff0c;但似乎许多用户并不认可或者至少说并不习惯…

使用GPUImageView录制视频保存后出现绿边

2019独角兽企业重金招聘Python工程师标准>>> 最近在使用GPUimageView做视频录制功能&#xff0c;录完后发现保存的视频右边有绿边&#xff0c;觉得好奇怪呀&#xff0c;为什么会这样呢&#xff1f;于是上网找资料&#xff0c;发现了这么一个说法&#xff1a;GPU和视…