ASP.NET-第八天-加强课程

第八天

复习文件流过程:创建,

文件的乱码

通过文件的前几个字节就能判断文件的编码;

StreamReader 与streamWriter

wps_clip_image-18297

True 表示可以追加

这样做输出的是隔行

wps_clip_image-10552

微软内部所使用的

wps_clip_image-9328

练习题工资翻倍显示

wps_clip_image-15259

对象序列化

就是将对象转换为二进制数据(字节流),反序列化 是将二进制数据还原为对象, 对象是稍纵即逝的, 很容易丢失,

过去:

想要存储一个对象,只能是将, 它的数据存储起来, 下次使用时,必须重新创建一个对象,然后这个对象的属性中的值,是来源于上个对象;;

BinaryFormatter

1.创建二进制对象序列化器

2.创建一个文件流

3.开始执行序列化

在使用序列化的时候, 避免使用自动属性, 每次编译的时候, 自动生成的字段名可能不一样, 在反序列化的时候可能会造成问题;

wps_clip_image-23829

可被序列化的条件

1.必须类型本身是可序列化的    //类的可被序列化 在类的上面加上 [Serializable]

2.类中所有的字段属性的类型也必须标记为可序列化的;

3.当前类型的所有父类也必须是可序列化的;

wps_clip_image-32615反序列化时的执行语句

反序列化步骤:

1.创建二进制序列化器(格式化器)     //无论序列化还是反序列化,都要创建文件流

2.开始执行反序列化;

在执行反序列化的时候,需要原序列化的程序集, 才能序列化;    //原因:在反序列化的时候,文件中包含的仅仅是一些数据, 根据这些数据是无法再内存中创建对象的 ,只能是反击原来类型中的数据把数据一一对应进行赋值;

对象的序列化只是对对象的一些状态信息进行序列化(比如: 字段)

对于方法之类的根本不进行序列化,也就是说反序列化文件中值包含字段名和字段值,根本没有方法信息, 但是反序列化的时候,返回的是一个对象,那么直根据这些字段信息是无法创建对象的,所以这个时候需要先根据原来的程序集, 获取序列化的类型,

正则表达式

是对文本和字符串进行操作的;

正则表达式元字符:

1.除\n任意的单个字符

2.[]   如:a[0-9]b 就表示: a0b;  a1b; a2b ... . .  还可以取反如a[^0-9]b表示不能是0-9之间的

3.| 表示或的关系  如z|food    就是z ; food ; zood ;

4.() 改变优先级,  提取组;

元字符2(限定符)

5.*限定符,表示前面的表达式可以出现多次或0次,(可有可无,可多可少)

6.+限定符,至少出现1次,可以出现多次

7.?限定符,表示出现0次或者1次;  [终止贪婪符]

8.{n}限定前面的表达式 ,必须只能出现5次;

9.{n,m}至少出现n次,最多m次;

10.{n, }至少出现n次

元字符:

1.^abc.x  //表示必须以abc开头的式子 如: abc$x;还有非的意思!

2.$  //结束符,同上

3.^和$都有时, 必须完全匹配;

简单元字符:

1.\d:表示一个数字;等同于[0-9]

2.\D:代表非数字, 等同于[^0-9]

3.\s表示换行符, tab制表符等空白字符,(空格, 回车, 制表符)

4.\S:代表非空白字符(a0%$@@)

5.\w匹配字母或数字或下划线

6.\W:非\w,等同于[^\w]%

规则表达式就是正则表达式       //据悉曾是生物学的名词

在.NET中使用正则表达式的时候就用Regex这个类

Regex .IsMatch();  //判断一个字符串中提取匹配正则表达式的某个字符串(只能提取一个)

Regex.Match();  //从某个字符串中提取

wps_clip_image-4388

例子:

1.^z|food$  //表示以z开头的任意字符串 或者以 food结尾的任意字符串都返回true

     原因是:|的优先级最低, 所以上边的表达式其实: (^z)|(food$)

2.^(z|f)ood$ 这个才表示要么是zood 要么是food, 只能匹配这两个

练习:

wps_clip_image-2816电话号码是否正确

wps_clip_image-1187邮件地址

wps_clip_image-17600IP地址的验证

wps_clip_image-5449URL地址

在进行字符串提取的时候一般不加^和$

字符串提取, 是在原来的字符串中只要找到一部分匹配就可以提取了,所以不加^$,如果加了,就表示提取的字符串完全匹配;

wps_clip_image-26942

.Groups [n]应该从1开始;  因为0代表的是整个式子;

当正则表达式提取的时候, 默认采用贪婪模式, 如果1个字符也能匹配, 多个字符也能匹配, 这时, 会按照使用最多字符的方式来匹配,这个就叫贪婪模式;

当?出现在式子后面时, 会匹配最小的字符串;

wps_clip_image-29728

posted @ 2012-12-12 18:05  云那边  阅读(184)  评论(0)    收藏  举报