为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

读取和写入文件

2012-11-19 50页 ppt 1MB 67阅读

用户头像

is_298815

暂无简介

举报
读取和写入文件null第5章 读取和写入文件第5章 读取和写入文件.NET Framework 2.0 程序设计.NET Framework 2.0 程序设计第 1 章: .NET Framework 2.0简介 第 2 章:公共语言运行库和类型 第 3 章:托管代码的编译和执行 第 4 章:委托和事件 第 5 章:读取和写入文件 第 6 章:集合和泛型 第 7 章:数据的序列化 第 8 章:GDI+ 第 9 章:在 .NET Framework 2.0中实现加密 第 10 章: COM 组件与.NET Framework...
读取和写入文件
null第5章 读取和写入文件第5章 读取和写入文件.NET Framework 2.0 程序设计.NET Framework 2.0 程序设计第 1 章: .NET Framework 2.0简介 第 2 章:公共语言运行库和类型 第 3 章:托管代码的编译和执行 第 4 章:委托和事件 第 5 章:读取和写入文件 第 6 章:集合和泛型 第 7 章:数据的序列化 第 8 章:GDI+ 第 9 章:在 .NET Framework 2.0中实现加密 第 10 章: COM 组件与.NET Framework程序集之间的交互操作 第 11 章:使用类型元数据 第 12 章:创建多线程应用程序和应用程序域 第 13 章:代码访问安全性 第 14 章:监视和调试应用程序 第 15 章:使用服务应用程序和电子邮件消息 第 16 章:创建全球化应用程序 第 17 章:配置和安装程序集 目标 本章学习目标: 使用 Path、File、FileInfo、Directory、DirectoryInfo、DriveInfo 和 FileSystemWatcher 类管理文件系统 使用 Stream、FileStream、MemoryStream 和 BufferedStream 类使用字节流 使用 DeflateStream、GZipStream、IsolatedStorageFile 和 IsolatedStorageFileStream 类压缩并保护流信息 使用 TextReader、TextWriter、StreamReader、StreamWriter、StringReader、StringWriter、BinaryReader 和 BinaryWriter 类管理应用程序数据 使用 StringBuilder 类来高效地操作字符串 使用正则达式类来使用正则表达式 目标 null使用 Path 类来访问文件路径 使用 File 和 FileInfo 类访问文件 (1) File 类 (2) FileInfo 类 使用 Directory 和 DirectoryInfo 类访问目录 (1) Directory 类 (2) DirectoryInfo 类 使用 DriveInfo 类访问驱动器 FileSystemWatcher 类 管理文件系统 5.1 管理文件系统一般而言,应用程序都会有保存数据、检索数据的需求 。null.使用 Path 类来访问文件路径 Path 类的属性和 5.1.1 使用 Path 类来访问文件路径null.使用 Path 类来访问文件路径(续) 5.1.1 使用 Path 类来访问文件路径续表:null.使用 Path 类来访问文件路径(续) 5.1.1 使用 Path 类来访问文件路径 static void Main(string[] args) { string pathString = @"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\Machine.config"; Console.WriteLine(Path.GetDirectoryName(pathString)); Console.WriteLine(Path.GetExtension(pathString)); Console.WriteLine(Path.GetFileName(pathString)); Console.WriteLine(Path.GetTempPath()); Console.WriteLine(Path.GetTempFileName()); } nullFile类的功能是操作文件。 C#中,命名空间System.IO中提供的File类是一个静态类,它的所有方法都是静态的,不需创建实例即可直接调用。File类支持对文件的基本操作,包括创建、复制、移动、删除和打开一个文件。使用 File 和 FileInfo 类访问文件 5.1.2 使用 File 和 FileInfo 类访问文件 null.使用 File 和 FileInfo 类访问文件 File 类中的可用方法5.1.2 使用 File 和 FileInfo 类访问文件 nullCreate方法,用于创建或覆盖文件,其语法形式如下: public static FileStream Create(string path); Open方法:用于打开文件,其语法形式如下: public static FileStream Open(string path,FileMode mode,FileAccess access );使用 File 和 FileInfo 类访问文件 5.1.2 使用 File 和 FileInfo 类访问文件 nullDelete方法:用于删除文件,如果指定的文件不存在,则引发异常,其语法形式如下: public static void Delete(string path); Copy方法:用于行文件复制,其语法形式如下: public static void Copy(string sourceFileName,string destFileName,bool overwrite);使用 File 和 FileInfo 类访问文件 5.1.2 使用 File 和 FileInfo 类访问文件 null示例: static void Main(string[] args) { string path = @“c"; string path2 = @"d:\temp\text1.txt"; try { File.Delete(path2); File.Copy(path, path2); Console.WriteLine("{0}复制到{1}", path, path2); } catch (Exception e) { Console.WriteLine(e.ToString ()); } Console.Read(); }使用 File 和 FileInfo 类访问文件 5.1.2 使用 File 和 FileInfo 类访问文件 nullFileInfo类与File类均能完成对文件的操作,不同点在于FileInfo类必须被实例化,并且每个FileInfo类的实例必须对应于系统中一个实际存在的文件。 FileInfo类构造函数的语法形式如下: public FileInfo(string path); 示例: FileInfo fi=New FileInfo(@" d:\temp\text1.txt ");使用 File 和 FileInfo 类访问文件(续) 5.1.2 使用 File 和 FileInfo 类访问文件 nullDirectory类对目录进行操作 。在C#中,命名空间System.IO中提供的Directory类是一个静态类,它的所有方法都是静态的,不需创建实例即可直接调用。 使用 Directory 和 DirectoryInfo 类访问目录 5.1.3 使用 Directory 和DirectoryInfo 类访问目录 null.使用 Directory 和 DirectoryInfo 类访问目录 Directory 类中的可用方法 5.1.3 使用 Directory 和DirectoryInfo 类访问目录 nullCreateDirectory方法:用于创建目录,如果指定的目录不存在,系统会按path指定的路径创建所有目录和子目录,其语法形式如下: public static DirectoryInfo CreateDirectory(string path); 示例: Directory.CreateDirectory("c:\\test"); Directory.CreateDirectory("c:\\test\\t1\\t2");使用 Directory 和 DirectoryInfo 类访问目录 5.1.3 使用 Directory 和DirectoryInfo 类访问目录 nullMove方法:用于将文件或目录及其内容移动到新目录,其语法形式如下: public static void Move(string sourceDirName, string destDirName); GetFiles方法:用于返回指定目录下文件的名称,并以字符串数组的形式返回,其语法形式如下: public static string[] GetFiles(string path); 使用 Directory 和 DirectoryInfo 类访问目录 5.1.3 使用 Directory 和DirectoryInfo 类访问目录 null示例:创建并删除指定目录 static void Main(string[] args) { string path = @"d:\MyDir"; if (Directory.Exists(path)) { Console.WriteLine("目录已存在"); return; } Directory.CreateDirectory(path); Console.WriteLine("成功创建目录:{0}",Directory .GetCreationTime (path )); Console.Read(); } 使用 Directory 和 DirectoryInfo 类访问目录 5.1.3 使用 Directory 和DirectoryInfo 类访问目录 nullDirectory类和DirectoryInfo类,这两个类均可用于对目录进行管理操作 。 DirectoryInfo类与Directory类的不同点在于DirectoryInfo类必须被实例化后才能使用,而Directory类则只能提供静态的方法。 DiectoryInfo类构造函数的语法形式如下: public DirectoryInfo(string path); 其中,参数path表示目录路径。使用 Directory 和 DirectoryInfo 类访问目录 5.1.3 使用 Directory 和DirectoryInfo 类访问目录 null.使用 DriveInfo 类访问驱动器 DriveInfo 类: 用于访问驱动器5.1.4 使用 DriveInfo 类访问驱动器 null.使用 DriveInfo 类访问驱动器(续) 5.1.4 使用 DriveInfo 类访问驱动器 续表:null.使用 DriveInfo 类访问驱动器(续) 5.1.4 使用 DriveInfo 类访问驱动器 static void Main(string[] args) { StringBuilder sb = new StringBuilder(); DriveInfo[] myAllDrivers = DriveInfo.GetDrives(); foreach (DriveInfo myDrive in myAllDrivers) { sb.Append("磁盘驱动器盘符:"); sb.AppendLine(myDrive.Name); sb.Append("磁盘卷标:"); sb.AppendLine(myDrive.VolumeLabel); sb.Append("磁盘类型:"); sb.AppendLine(myDrive.DriveType.ToString()); sb.Append("磁盘格式:"); sb.AppendLine(myDrive.DriveFormat); sb.Append("磁盘大小:"); sb.AppendLine(myDrive.TotalSize.ToString()); sb.Append("剩余空间:"); sb.AppendLine(myDrive.AvailableFreeSpace.ToString()); sb.Append("总剩余空间(含磁盘配额):"); sb.AppendLine(myDrive.TotalFreeSpace.ToString()); sb.AppendLine("-------------------------------------"); } Console.Write(sb); Console.Read(); }null.FileSystemWatcher 类 5.1.5 FileSystemWatcher 类 许多情况下,如果创建或修改一个文件,系统需要执行某些任务。例如,当你从网络下载一个文件,杀毒软件需要对它进行查毒、杀毒。在这种情况下,程序必须监控目录的变化。在.NET Framework中,提供了用于此用途的FileSystemWatcher对象。 null.FileSystemWatcher 类 5.1.5 FileSystemWatcher 类FileSystemWatcher 属性: Path:获取或设置要监视的目录的路径 。例如,如果我们将这个属性设为“D:\Temp”,就监控那个目录发生的所有改变。 NotifyFilter :获取或设置要监视的更改类型 NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName 。 Filter:获取或设置筛选字符串,用于确定在目录中监视哪些类型 文件 。例如,如果我们只希望在TXT文件被修改/新建/删除时提交通知,可以将该属性设为“*.txt”。在处理高流量或大型目录时,使用这个属性非常方便。 EnableRaisingEvents:决定对象在收到改变通知时是否提交事件。null.FileSystemWatcher 类 5.1.5 FileSystemWatcher 类FileSystemWatcher 事件 Changed——当被监控的目录中有一个文件被修改时,就引发这个 事件。 Created——当被监控的目录中新建一个文件时,就引发这个事件。 Deleted——当被监控的目录中有一个文件被删除,就引发这个事件。 Renamed——当被监控的目录中有一个文件被重命名,就引发这个事件。 null.FileSystemWatcher 类 5.1.5 FileSystemWatcher 类 static void Main(string[] args) { FileSystemWatcher watcher = new FileSystemWatcher(@"d:\temp"); watcher.NotifyFilter = (NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName); watcher.Changed += new FileSystemEventHandler(OnChanged); watcher.Created += new FileSystemEventHandler(OnChanged); watcher.Deleted += new FileSystemEventHandler(OnChanged); watcher.Renamed += new RenamedEventHandler(OnRenamed); watcher.Error += new ErrorEventHandler(OnError); watcher.EnableRaisingEvents = true; Console.WriteLine("Press 'Enter' to exit..."); Console.ReadLine(); } private static void OnChanged(object source, FileSystemEventArgs e) { WatcherChangeTypes changeType = e.ChangeType; Console.WriteLine("The file {0} {1}", e.FullPath, changeType.ToString()); } private static void OnRenamed(object source, RenamedEventArgs e) { WatcherChangeTypes changeType = e.ChangeType; Console.WriteLine("The file {0} {2} to {1}", e.OldFullPath, e.FullPath, changeType.ToString()); } private static void OnError(object source, ErrorEventArgs e) { Console.WriteLine("An error has occurred."); } null使用 Stream 类管理字节流 使用 FileStream 类管理文件数据 使用 MemoryStream 类管理内存数据 使用 BufferedStream 类提高流性能 .使用字节流 5.2 使用字节流null.NET Framework 提供了 Stream 类来管理字节流。Stream 类是一个抽象(MustInherit)类,它提供 .NET Framework 中所有流类的基本功能。 使用字节流5.2 使用字节流FileStream 类是从 Stream 类继承而来的实体类,它用于将数据以流的形式写入或读出文件。 MemoryStream 类是一个实体类。它从 Stream 类继承而来,用于在内存中写入、读出数据。 BufferedStream 类是从 Stream 类继承而来的实体类,它用于向另一种类型的流提供额外的内存缓冲区。 null压缩和解压缩 (1)使用 DeflateStream 类压缩流信息 (2)使用 GZipStream 类压缩流信息 独立存储 使用独立存储类保护流信息 压缩和保护流信息5.3 压缩和保护流信息null压缩是使用较少的位对信息进行编码以减小文件大小的过程。 解压缩是使用压缩过程中创建的映射将压缩文件恢复成原始状态和大小的过程。压缩和保护流信息(续)5.3 压缩和保护流信息null压缩和解压缩 5.3.1 压缩和解压缩使用 DeflateStream 来压缩流信息 Deflate Stream 类中提供了使用 Deflate 算法压缩和解压缩流的方法。Deflate 算法是无损文件压缩和解压缩的行业算法。无损文件压缩允许从压缩的数据重新构造确切数据。不能使用 DeflateStream 类来压缩大于 4 GB的文件。 null. public static void DeflateStreamDemo() { try { FileStream myFileStream; DeflateStream myDeflateStream; System.IO.FileInfo myFile; string originalXMLFileName = "d:\\HomeBasic.xml"; string compressedXMLFileName = "d:\\UserData_Compressed"; string decompressedXMLFileName = "d:\\UncompressedUserData.xml"; System.Data.DataSet dsTest = new System.Data.DataSet(); myFile = new FileInfo(originalXMLFileName); Console.WriteLine("The original data file, {0} contains {1} bytes.", myFile.Name, myFile.Length.ToString()); dsTest.ReadXml(originalXMLFileName); myFileStream = new FileStream(compressedXMLFileName, FileMode.Create, FileAccess.Write); myDeflateStream = new DeflateStream(myFileStream, CompressionMode.Compress); dsTest.WriteXml(myDeflateStream); myDeflateStream.Close(); myFile = new FileInfo(compressedXMLFileName); Console.WriteLine("The file has been compressed to {0} bytes and is stored in {1}.", myFile.Length.ToString(), myFile.Name); myFileStream = new FileStream(compressedXMLFileName, FileMode.Open, FileAccess.Read); myDeflateStream = new DeflateStream(myFileStream, CompressionMode.Decompress); dsTest = new DataSet(); dsTest.ReadXml(myDeflateStream); dsTest.WriteXml(decompressedXMLFileName); myFile = new FileInfo(decompressedXMLFileName); Console.WriteLine("The file has been uncompressed and is now {0} bytes and is stored in {1}.", myFile.Length.ToString(), myFile.Name); } catch (Exception xcp) { Console.WriteLine(xcp.ToString()); } } static void Main(string[] args) { DeflateStreamDemo(); }压缩和解压缩 5.3.1 压缩和解压缩null压缩和解压缩 5.3.1 压缩和解压缩使用 GZipStream类压缩流信息 要在压缩过程中检查错误或要与其他操作系统所用程序共享压缩数据,则要使用GZipStream类。GZipStream类包含使用 GZip数据格式进行压缩和解压缩文件的方法。使用GZipStream 格式压缩的文件以 gz扩展名保存。其他操作系统经常使用GZip 格式。该类不能用于解压缩大于4GB 的文件。 null5.4 管理应用程序数据数据.NET Framework.支持的字符编码类型: 管理应用程序数据 null 常见System.IO命名空间中的常用类 管理应用程序数据 5.4 管理应用程序数据管理应用程序数据 5.4 管理应用程序数据null常用属性:CanRead、CanSeek、CanWrite、Length、Position 常用方法:Read、ReadByte 、Write、WriteByte、Seek、Flush、Close 构造函数: public FileStream(string path ,FileMode mode); public FileStream(string path ,FileMode mode,FileAccess access);管理应用程序数据 FileStreamnullRead方法:用于由文件流中读取数据并保存到字节数组array中,其语法形式: public override int Read(byte[]array,int offest,int count); Write方法:把字节数组array中的数据写入到文件流中,其语法形式如下: public override void Write(byte[]arry,int offest, int count); Flush方法:用于将保存在缓冲区中的所有数据真正写入到文件中,其语法形式如下: public override void Flush(); Close方法:关闭文件流并释放与当前文件流关联的全部资源,其语法形式如下: public override void Close (); 管理应用程序数据 FileStreamnull static void Main(string[] args) { string overview = "Most commercial applications, such as..."; FileInfo fileStore = new FileInfo("d:\\Overview.txt"); FileStream conduit = fileStore.Create(); byte[] encodedOverview = new UTF8Encoding().GetBytes(overview); conduit.Write(encodedOverview, 0, encodedOverview.Length); conduit.Close(); }管理应用程序数据 FileStreamnull与FileStream类中的Read方法和Write方法相比,这两个类的应用更为广泛且简单,因为StreamWriter类和StreamReader类按字符操作文件流,而FileStream类使用字节操作文件流。 StreamWriter类常用方法:Write 、WriteLine、 Close 、Flush 管理应用程序数据 StreamWriter和StreamReadernull示例: FileStream MyFile=new FileStream ("D:\\example.txt",FileMode.OpenOrCreate , FileAccess .Write ); StreamWriter MyStreamWriter = new StreamWriter((Stream)MyFile, System.Text. Encoding.Unicode); MyStreamWriter.Write("你好"); MyStreamWriter.Flush(); MyStreamWriter.Close();管理应用程序数据 StreamWriter和StreamReadernullStreamReader类常用方法:Read 、ReadLine 示例: string MyText = ""; StreamReader MySf = new StreamReader("D:\\example.txt", System.Text.Encoding. Unicode); MySf.BaseStream.Seek(0, SeekOrigin.Begin); while (MySf.Peek() != -1) { MyText = MySf.ReadLine(); MyText = MyText + "\r" + "\n"; Console.Write(MyText); } MySf.Close(); 管理应用程序数据 StreamWriter和StreamReadernullBinaryWriter类的作用是以二进制形式将基本数据类型的数据写入到流中。BinaryReader类的作用是用特定的编码从流中读取二进制数据并存放到基本数据类型的变量或数组中。 BinaryWriter类的主要方法:Seek、Write 。 BinaryReader类的主要方法:ReadBytes 、Readchars 管理应用程序数据 BinaryWrite和BinaryReader管理应用程序数据 BinaryWrite和BinaryReadernullBinaryWriter类的主要方法: Seek方法:用与设置流的当前位置。 public virtual long Seek(int offest,SeekOrigin origin); Write方法:用于把值写入流中,其语法形式: public virtual void Write(数据类型value); public virtual void Write(byte[]buffer); public virtual void Write(char[] chars);管理应用程序数据 BinaryWrite和BinaryReadernullBinaryReader类的主要方法 ReadBytes方法:用于读取字节数组,从当前流中将count个字节读入字节数组,并使当前位置提升count个字节,其语法形式: public virtual byte[] ReadByte(int count); Readchars方法:用于读取字符数组,从当前流中读取count个字符,以字符数组的形式返回数据并提升当前位置,其语法形式如下: public virtual char[] ReadChars(int count );管理应用程序数据 BinaryWrite和BinaryReadernullStringReader类可以从包含多行的字符串中提取每一行 StringReader 和 StringWriter 类都属于 System.IO 命名空间 StreamReader 和StreamWriter类继承自TextReader 和 TextWriter类 使用StreamReader.ReadToEnd方法可以读取整个流的内容.管理字符串 5.4.3 管理字符串使用 StringReader 和 StringWriter 类可以读写字符串中的子字符串。 null static void Main(string[] args) { StreamReader myReader; StreamWriter myWriter; string fileToRead = "d:\\ReadingAndWritingTextFiles.txt"; string fileToWrite = "d:\\NewTextFile.txt"; string lineInput; string codeNumber; int position = 0; char[] firstCharacters = new char[2]; try { myReader = new StreamReader(fileToRead); myWriter = new StreamWriter(fileToWrite); position = myReader.Read(firstCharacters, 0, 2); codeNumber = firstCharacters[0].ToString() + firstCharacters[1].ToString(); if (codeNumber == "23" || codeNumber == "56") { Console.WriteLine("The code for this file is {0}", codeNumber); while ((lineInput = myReader.ReadLine()) != null) { Console.WriteLine(lineInput); myWriter.WriteLine(lineInput); } myWriter.WriteLine(); myWriter.WriteLine("This data was modified at " + DateTime.Now.ToLongTimeString()); myReader.Close(); myWriter.Close(); } else { Console.WriteLine("This program only processes text files that begin with 23 or 56."); Console.WriteLine("Goodbye"); return; } }//End try catch (Exception xcp) { Console.WriteLine("There was an error reading the file."); Console.WriteLine(xcp.ToString()); } }.管理字符串 5.4.3 管理字符串null String 对象是不可改变的。每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的 String 对象相关的系统开销可能会非常昂贵。 如果要修改字符串而不创建新的对象,则可以使用 System.Text.StringBuilder 类。例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。 创建 StringBuilder 类的新实例: StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); 高效操作字符串 5.5 高效操作字符串null(二)属性 设置容量和长度   虽然 StringBuilder 对象是动态对象,允许扩充它所封装的字符串中字符的数量,但是可以为它可容纳的最大字符数指定一个值,此值称为该对象的容量。 不应将它与当前 StringBuilder 对象容纳的字符串长度混淆在一起。例如,可以创建 StringBuilder 类的带有字符串“Hello”(长度为 5)的一个新实例,同时可以指定该对象的最大容量为 25。当修改 StringBuilder 时,在达到容量之前,它不会为其自己重新分配空间。当达到容量时,将自动分配新的空间且容量翻倍。 StringBuilder MyStringBuilder = new StringBuilder("Hello", 25); 另外,可以使用读/写 Capacity 属性来设置对象的最大长度。以下代码示例使用 Capacity 属性来定义对象的最大长度。 MyStringBuilder.Capacity = 25; 高效操作字符串 5.5 高效操作字符串null(二)常用方法 (1)Append 方法可用来将文本或对象的字符串表示形式添加到由当前 StringBuilder 对象表示的字符串对象 StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); MyStringBuilder.Append(" What a beautiful day."); Console.WriteLine(MyStringBuilder); (2)Insert 方法将字符串或对象添加到当前 StringBuilder 中的指定位置。以下示例使用此方法将一个单词插入到 StringBuilder 的第六个位置。 StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); MyStringBuilder.Insert(6,"Beautiful "); 高效操作字符串 5.5 高效操作字符串null(二)常用方法 (3)Remove 方法从当前 StringBuilder 中移除指定数量的字符,移除过程从指定的从零开始的索引处开始。以下示例使用 Remove 方法缩短 StringBuilder。 StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); MyStringBuilder.Remove(5,7); (4) Replace 方法,可以用另一个指定的字符来替换 StringBuilder 对象内的字符。以下示例使用 Replace 方法来搜索 StringBuilder 对象,查找所有的感叹号字符 (!),并用问号字符 (?) 来替换它们。 StringBuilder MyStringBuilder = new StringBuilder("Hello World!"); MyStringBuilder.Replace('!', '?'); 高效操作字符串 5.5 高效操作字符串正则表达式和Regex类正则表达式和Regex类 正则表达式(Regular expressions)是一套语法匹配规则,各种语言,如Perl, .Net和Java都有其对应的共享的正则表达式类库。 简单的说,Regex是从字符中查找匹配字符串的应用类。通过Regex,编程人员能够非常方便的从一段数据中提取自己所需要的数据信息。 正则表达式和Regex类正则表达式和Regex类.NET框架通过Regex类(System.Text.RegularExpressions.Regex)来定义正则表达式 正则表达式是由普通字符以及特殊字符(称为元字符)组成的 普通字符由所有那些未显式指定为元字符的字符组成,比如所有的大写和小写字母字符,所有数字,大部分标点符号正则表达式和Regex类正则表达式和Regex类实例化Regex对象 (1)Regex regex = new Regex(正则表达式); (2)Regex regex = new Regex(正则表达式, RegexOptions.None | RegexOptions.IgnoreCase | RegexOptions.Multiline); None 无; IgnoreCase能够在匹配是忽略大小写; Multiline调整^和$的意义,改为匹配一行的开头和结尾 正则表达式和Regex类正则表达式和Regex类Regex类的方法 验证匹配。您可以调用 IsMatch 方法以确定是否存在匹配。 检索单个匹配。您可以调用 Match 方法来检索 Match 对象,该对象表示字符串或字符串一部分中的第一个匹配项。后续匹配项可以通过调用 Match.NextMatch 方法进行检索。 检索所有匹配。您可以调用 Matches 方法来检索 System.Text.RegularExpressions.MatchCollection 对象,该对象表示在字符串或字符串一部分中找到的所有匹配项。 替换匹配的文本。您可以调用 Replace 方法来替换匹配的文本。此替换文本还可通过正则表达式来定义。此外,某些 Replace 方法包括一个 MatchEvaluator 参数,该参数使您能够以编程方式定义替换文本。 拆分字符串。创建字符串数组,该数组是由输入字符串的各个部分构成。可以调用 Split 方法,在正则表达式定义的位置拆分输入字符串。 string[] result = regex.Split(ms); 案例1-检索匹配案例1-检索匹配 Regex reg = new Regex(@"\d+"); string s1="9个8等于72"; //搜索第一个匹配项,返回Match类型的对象, 表示一个匹配 if (reg.IsMatch(s1)) { Match m = reg.Match(s1); Console.WriteLine(m); } //搜索所有的匹配项,返回MatchCollection类型 的对象,包含所有匹配结果 MatchCollection mc = reg.Matches(s1); foreach (Match m1 in mc) Console.WriteLine(m1);元字符的含义(1)元字符的含义(1)元字符的含义(2)元字符的含义(2)案例2-替换匹配的文本案例2-替换匹配的文本 static void Main(string[] args) { string text = "four score and seven years ago"; System.Console.WriteLine("text=[" + text + "]"); string result = Regex.Replace(text, @"\w+", new MatchEvaluator(Program.CapText)); System.Console.WriteLine("result=[" + result + "]"); Console.ReadKey(); } static string CapText(Match m) { string x = m.ToString(); if (char.IsLower(x[0])) { return char.ToUpper(x[0]) + x.Substring(1, x.Leng
/
本文档为【读取和写入文件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索