大家可以关注下我的微信公众号

序列化正则表达式

技术文章 admin 1469℃ 0评论

压缩流

序列化(格式化)(二进制序列化)
System.web.Eextions
JavaScriptSerializer jsSer
返回值为字符串

序列化只序列化数据,(比如字段的值)
序列化后,只是把对象的存储格式改变了,对于对象的实际存储内容并没有改变。
有序列化就有反序列化

二进制序列化

二进制序列化就是把对象变成流的过程,就是把对象变成byte[]
将Person对象序列化后保存到磁盘上,要操作磁盘文件所以需要使用文件流(FileStream)
在Person前加[Serializable]
二进制序列化注意点:
被序列化的对象的类型必须标志为可序列化。
被序列化的类所有的父类也必须标志为可序列化。
要求被序列化的对象的类型中的所有字段的类型也必须标记为可序列化。
[NonSerialized]
private string _name
步骤:
创建序列化器
BinaryFormatter bf=new BinaryFormatter();
1.1创建一个文件流
using(FileStream fsWrite=new FileStream(“**”,FileMode.Create))
{
开始执行序列化
bf.Serialize(fsWrite,p1);
}

返序列化
创建序列化器
BinaryFormatter bf=new BinaryFormatter();
using(FileStream fsRead=new FileStream(“**”,FileMode.Open))创建一个读取的文件的文件流
{
开始执行序列化
object obj=bf.Deserialize(fsWrite);
Person person=(Person)obj
}
二进制反序列化的时候注意:
必须获取被序列化的对象的类型所在的程序集,因为:反序列化要根据序列化文件重新还原该对象,而序列化文件中只包含哪些数据信息,并不包含该对象的类型相关的信息,比如:该对象是继承自哪 个父类,实现了哪些接口,类型中包含哪些方法。。。。这些信息在对象序列化文件中都不包含,要获取这些信息必须通过该类型的程序集来获取

Application.Exit();退出

正则表达式
正则表达式是对字符串操作的
与语言无关
1、.表示任意的单个字符。除\n之外
2、[]字符组任意的单个字符,中括号中的任意一个字符。
a[aeiou]b
a[0-9]b
a[axz\.]b .在中括号中出现时,本身就表示一个普通的.已经不再是“元字符”
3、’|’表示或的意思。或的优先级非常低,最后才计算。
4、()含义:1、改变优先级。2、提取级(分组)
-:连字符
限定符
{n}表示前面的表达式必须出现n次。
{n,}表示前面的表达式至少出现n次,最多不限
{n,m}至少出现n,最多出现m次。

*表示出现0次或者多次。{0,}
+表示出现1次或多次
?表示0次到1次 ?的另外一个意思,防止贪婪模式。

^与$
^hello 以hello开头
表示字符串的开始,取非。
$表示字符串的结束。

简写表达式:匹配全角
\d a[0-9]与a\db一样
\D表示[^0-9]
\s表示所有空白符
\S表示\s的反面

\w[a-zA-Z0-9_]
\b:表示单词的边界
匹配任意的单个字符[\s\S]
由于.net默认采用unicode方式来匹配。所以\W也可以匹配汉字
Regex.Escape()中的所有内容都是普通字符

Regex.IsMatch(postcode,”^[0-9]{6}$”)要求必须是6个数字结尾,所以说就是:必须完全匹配
IsMatch()表示只要整个字符串中有任何一部分可以匹配,该正则表达式,则返回true。

RegexOptions.ECMAScript
Regex.Ismatch(msg,”z|food”) zood匹配,包括z
^z|food$ 以z开始,以food结尾
^(z|fodd)& 只有z或food

案例4
要求用户输入一个整数,匹配是否为>=10并且小于等于20的数组
^(1[0-9]|20)$

IsMathch(“字符串”)
Regex.Split();

 

转载请注明:程序人生 » 序列化正则表达式

喜欢 (0)or分享 (0)