随笔分类 -  C#基础

摘要:正则表达式提供了功能强大、灵活而又高效的方法来处理文本。正则表达式的全面模式匹配表示法使您可以快速分析大量文本以找到特定的字符模式;提取、编辑、替换或删除文本子字符串;或将提取的字符串添加到集合以生成报告。对于处理字符串(例如 HTML 处理、日志文件分析和HTTP 标头分析)的许多应用程序而言,正则表达式是不可缺少的工具。正则表达式是一个非常有用的技术,有人曾称之为能让程序员不至于丢掉饭碗的十大技术之一,可见它的重要性。熟悉DOS或者命令行的朋友或许已经用过类似的功能,比如我们要查找D盘下所有的低于Word2007版本的Word文件(因为低于Word2007版本的Word文件的文件后缀是.d 阅读全文
posted @ 2010-03-12 07:04 周金桥 阅读(203) 评论(0) 推荐(0)
摘要:前面两篇讲述了正则表达式的基础和一些简单的例子,这篇将稍微深入一点探讨一下正则表达式分组,在.NET中正则表达式分组是用Match类来代表的。首先先看一段代码:/// <summary>/// 显示Match内多个Group的例子/// </summary>public void ShowStructure(){ //要匹配的字符串 string text = "1A 2B 3C 4D 5E 6F 7G 8H 9I 10J 11Q 12J 13K 14L 15M 16N ffee80 #800080"; //正则表达式 string pattern 阅读全文
posted @ 2010-03-09 07:03 周金桥 阅读(333) 评论(0) 推荐(0)
摘要:上一篇讲述了在C#中有关正则表达式的类之间的关系,以及它们的方法,这一篇主要是将Regex这个类的用法的,关于Match及MatchCollection类会在下一篇讲到。对于正则表达式的应用,基本上可以分为验证、提取、分割和替换。仅仅利用Regex类就可以实现验证和简单替换。利用Regex类实现验证经历2009年的备案和DNS停止解析风波之后,大部分的带有反馈性的网站和论坛都对一些敏感词进行了过滤,包含有这类敏感词的文章要么内容被替换要么被禁止发表,利用Regex类就可以实现这个功能,下面是一个例子:/// <summary>/// 检查字符串中是否有“孙权”这个敏感词/// &l 阅读全文
posted @ 2010-03-04 18:10 周金桥 阅读(196) 评论(0) 推荐(0)
摘要:正则表达式是一门灵活性非常强的语言,匹配同样的字符串可能在不同的开发人员那里会得到不同的结果,在平常的时候也是用的时候看看相关资料,不用的时候就丢在脑后了,尽管在处理大部分情况下都能迅速处理,但是处理一些复杂的情况效率仍是不高,借着前阵子做过的一个项目涉及到正则表达式的机会,将有关资料阅读了一遍并结合了自己的体会,整理了几篇利用C#进行正则表达式编程的文章,一来加深自己的印象和理解,二来供博客上的读者学习借鉴。在.NET中提供了对正则表达式的支持,并且提供了相关的类,分别有:Regex、Match、Group、Capture、RegexOptions、MatchCollection、Group 阅读全文
posted @ 2010-03-03 19:27 周金桥 阅读(193) 评论(0) 推荐(0)
摘要:前段时间朋友接了一个项目,具体是开发一个安装在局域网内的软件,这个软件会定时连接局域网内的服务器来更新本地客户端的一些信息,因为在局域网内存在着多种不同的Windows版本,从WindowsXP、Windows2003及Windows2008到Windows7等,这个软件采用VS2008/.NetFramework2.0开发,因为有些系统默认没有安装.NetFramework2.0,所以在运行时需要确保客户机上已经安装上.NetFramework2.0,于是想到将软件打包。制作软件安装包有几种工具和方案:一是利用VisualStudio自带的安装包制作工具;二是利用InstallShield这 阅读全文
posted @ 2010-03-01 10:46 周金桥 阅读(581) 评论(0) 推荐(0)
摘要:为了让程序尽快响应用户操作,在开发Windows应用程序时经常会使用到线程。对于耗时的操作如果不使用线程将会是UI界面长时间处于停滞状态,这种情况是用户非常不愿意看到的,在这种情况下我们希望使用线程来解决这个问题。下面是一个使用多线程操作界面UI的代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Th 阅读全文
posted @ 2010-01-18 08:54 周金桥 阅读(259) 评论(0) 推荐(0)
摘要:在面向对象编程中,经常会面对创建对象和销毁对象的情况,如果不正确处理的话,在短时间内创建大量对象然后执行简单处理之后又要销毁这些刚刚建立的对象,这是一个非常消耗性能的低效行为,所以很多面向对象语言中在内部使用对象池来处理这种情况,以提高性能,比如在ADO.NET内部就允许使用数据库连接池来提高性能,在JDBC中没有提供数据库连接池,一些开发人员为了提高效率就自己编写数据库连接池来提高性能,当然据我所知在Java中有些框架提供了数据库连接的池化处理。在多线程编程时也会遇到上面的情况,如果创建了过多的线程将会增加操作系统资源的占用,并且还要处理资源要求和潜在的占用冲突,并且使用了多线程之后将使代码 阅读全文
posted @ 2010-01-11 20:59 周金桥 阅读(224) 评论(0) 推荐(0)
摘要:在《多线程编程》系列第一篇讲述了如何启动线程,这篇讲述线程之间存在竞争时如何确保同步并且不发生死锁。线程不同步引出的问题下面做一个假设,假设有100张票,由两个线程来实现一个售票程序,每次线程运行时首先检查是否还有票未售出,如果有就按照票号从小到大的顺序售出票号最小的票,程序的代码如下:using System;using System.Collections.Generic;using System.Text;using System.Threading;namespace StartThread{ public class ThreadLock { private... 阅读全文
posted @ 2010-01-10 20:18 周金桥 阅读(256) 评论(0) 推荐(0)
摘要:在实例化Thread的实例,需要提供一个委托,在实例化这个委托时所用到的参数是线程将来启动时要运行的方法。在.net中提供了两种启动线程的方式,一种是不带参数的启动方式,另一种是带参数的启动的方式。不带参数的启动方式如果启动参数时无需其它额外的信息,可以使用ThreadStart来实例化Thread,如下面的代码:using System; using System.Collections.Generic; using System.Text; using System.Threading; namespace StartThread { class Program { ... 阅读全文
posted @ 2009-08-03 09:30 周金桥 阅读(204) 评论(0) 推荐(0)