C#第十节

122 阅读3分钟

一.大文件读取方式

  1. FileStream文件流(操作字节可以读取各种文件信息流)
  2. FileStream和File的区别
  • File是一次性读取所有文件信息,而FileStream是以文件流的形式一点点的去读取文件信息
  1. 使用FileStream读取文件信息

image.png

4.使用FileStream写入文件信息

image.png

5.StreamReader

image.png

6.StreamWrite

image.png 小练习:写一个程序逐行输入字符串,将每一行的内容写入到同个目录下的1.txt文件并换行,最后遇到q字符结束写入

image.png

二.字符串String

  1. 关于字符串的几个方法

image.png

image.png 2. 为什么要使用StringBuilder

  • 如果我们频繁去删除和添加字符串中的内容,使用string生成的字符串我们知道每次更改会重新指向堆中新的数据,这样会重复删除新建数据非常耗性能,如果使用StringBuilder不会频繁申请内存空间,可以自动向后扩展。

3.使用StringBuilder创建字符串的方式 image.png

三.正则表达式

  1. 正则表达式的作用 image.png
  2. 正则表达式是什么
  • 正则表达式就是由普通字符串和特殊字符组成的文字模式,在查找文字的主体时可以匹配到一个或多个字符串。 3.特殊字符
  • 字符类

image.png

  • 定位类

image.png

  • 量词

image.png

3.Regex.Replace()方法替换匹配出来的字符串

image.png 4.Regex.IsMatch(字符串,正则表达式)判断字符串是否符合正则表达式

image.png 5. 匹配是否正确的邮箱

邮箱的格式是qq号(5~12位数字)[+@qq.com]

image.png

6.Regex.Match(s,pattern)匹配第一个满足的字符串

image.png 7. Regex.Split(s,pattern)实现字符串的分割

image.png 8.常见的几个正则表达式

image.png

三.正则表达式中的断言

  1. 为什么需要断言?

我们之前使用^和$来匹配子串中出现的位置,如果字符串的位置不是在最后也不是在最前面,而是在某个字符之前或者在某个字符之后,这个时候我们就可以使用断言来定位,匹配出指定位置的子串。

  1. 四种断言

image.png

3.(?<=Y)和(?<!Z) 表示匹配出来的子串左边必须符合某种类型的字符串,<=表示左边是Y类型的,<!表示的是左边非Y类型的如匹配123abcd234fd中abcd后面的234,那么我们可以使用(?<=d)\d+表示满足数字的左边是字符d的子串,这样我们匹配出的就是234

image.png

image.png 4. (?=Y)和(?!Y) 表示匹配出的子串右边必须是符合某种类型的字符串,=表示右边是Y类型,!表示右边是非Y类型,比如匹配123abcd234fd中所有在123和234中间的字符那么我们就可以使用(?<=y)和(?=y)一起来判断

image.png 5. 练习题

将当前的文件夹目录中所有的txt文件匹配,打印出txt文件名

image.png 6.提取正则表达式中某个满足条件的字符串Match.Groups

  • 根据编号拿到匹配的嵌入子串 image.png
  • 根据占位符匹配到括号中的子串

image.png

  1. 练习题

匹配正则表达式中的日期,拿到年份,月份,日期

image.png