C# 基本概念10

来源:互联网 发布:数据统计分析的要求 编辑:程序博客网 时间:2024/05/24 20:08
字符串处理

字符串类型是C# 编程语言中最为常用的一种数据类型,.NET
Framework 为字符串提供了丰富地操作和处理方法。通
过这些方法,开发人员可以轻松简单地处理字符串。。
 String 类;
 StringBuilder 类;
  不变字符串处理;
  可变字符串处理。


String 和 StringBuilder 类

在.NET Framework 中,字符串可以分为两种类型:不变字
符串(由String 类表示)和可变字符串(由StringBuilder
类表示)。不变字符串一旦被创建,那么它的内容是不
能被修改的;而可变字符串被创建之后,它的内容是可
以动态修改的。


String 类

String 类表示一系列的有序Unicode 字符,用来表示文本。
String 对象是字符(Char 对象)的有序集合,用来表示字
符串。String 对象的值是该有序集合的内容,并且该值是
不可变的,即一旦创建了一个String 对象,那么就不能修
改该对象的值。虽然有些方法看起来修改了String 对象,
而实际上是返回了一个包含修改后内容的新的String 对象



StringBuilder 类

StringBuilder 类表示可变字符串,可以创建能够动态修改(
如追加、移除、替换、插入等)的字符串对象。


不变字符串处理

不变字符串(由String 类表示)是不能被修改的。对不变字
符串的每一次处理都将产生一个新的字符串。不变字符
串处理的方法主要包括插入字符串、移除字符串、替换
字符串、联接字符串、分隔字符串、填充字符串等。下
面将详细介绍这些方法。


插入字符串

插入字符串是将新的字符串插入到字符串的指定位置,该功
能由String 类的Insert() 方法实现。Insert() 方法的原型如
下。
public string Insert(int startIndex,string value)
上述方法将value 参数指定字符串插入到字符串的startIndex
指定的位置。
startIndex 参数表示插入的位置(即索引值),value 参数表
示被插入的新字符串。上述方法返回一个新的字符串。


移除字符串

移除字符串是从字符串中指定位置开始移除其后的所有字符
或指定数量的字符,该功能由String 类的Remove() 方法实
现。Remove() 方法的原型如下。
 public string Remove(int startIndex) ,从startIndex 位置
开始移除其后的所有字符。
 public string Remove(int startIndex,int count) ,从
startIndex 位置开始移除其后的数量为count 的字符。
C# 从入门到实践
19.2.3 替换字符串
替换字符是指将字符串中指定字符替换为新的字符,或者将
指定的字符串替换为新的字符串,该功能由String 类的
Replace() 方法实现。Replace() 方法的原型如下。
 public string Replace(char oldChar,char newChar) ,将字
符串中指定字符替换为新的字符。
 public string Replace(string oldValue,string newValue) ,
将字符串中指定字符串替换为新的字符串。
 oldChar 参数表示被替换的字符,newChar 参数表示替换
后的字符。oldValue 参数表示被替换的字符串,
newValue 参数表示替换后的字符串。
C# 从入门到实践
19.2.4 联接字符串
联接字符串是将一个或多个字符串对象联接为一个新的字符
串,该功能由String 类的Concat() 方法或Join() 方法实现。
其中,Concat() 方法的最常用的4 种原型如下。
 public static string Concat(object arg0) ,联接arg0 对象的
字符串表示形式,并创建一个新的字符串。
 public static string Concat(string str0,string str1) ,联接
str0 和str1 字符串,并创建一个新的字符串。
 public static string Concat(string str0,string str1,string
str2) ,联接str0 、str1 和str2 字符串,并创建一个新的字
符串。
 public static string Concat(string str0,string str1,string
str2,string str3) ,联接str0 、str1 、str2 和str3 字符串,并
创建一个新的字符串。
C# 从入门到实践
19.2.5 分隔字符串
分隔字符串是将一个字符串被指定的分隔字符或字符串分隔为多个子
字符串,并返回由子字符串组成的字符串数组。该功能由String 类
的Split() 方法实现,它的原型如下。
 public string[] Split(params char[] separator) 。
 public string[] Split(char[] separator,int count) 。
 public string[] Split(char[] separator,StringSplitOptions options) 。
 public string[] Split(string[] separator,StringSplitOptions options) 。
 public string[] Split(char[] separator,int count,StringSplitOptions
options) 。
 public string[] Split(string[] separator,int count,StringSplitOptions
options) 。
C# 从入门到实践
19.2.6 填充字符串
填充字符串是向字符串的指定位置填充指定的字符,该功能
由String 类的PadRight() 和PadLeft() 方法实现。其中,
PadRight() 方法在字符串的右边填充字符,PadLeft() 方法
在字符串的左边填充字符串。由于这两个方法比较相似
,下面只将介绍PadLeft() 方法。PadLeft() 方法的原型如
下。
 public string PadLeft(int totalWidth) ,在字符串的左边填
充空白字符,填充之后,新字符串的总长度为totalWidth
 public string PadLeft(int totalWidth,char paddingChar)
,在字符串的左边填充paddingChar 字符,填充之后,新
字符串的总长度为totalWidth 。
C# 从入门到实践
19.2.7 查找字符串
查找字符串是指从字符串中查找指定的字符或子字符串。如
果找到,则返回第一个匹配字符或字符串的索引;否则
返回-1 。该功能由String 类的IndexOf() 和LastIndexOf() 方
法实现。其中,IndexOf() 方法是从字符串的第一个字符
开始依照从头到尾的方式查找,LastIndexOf() 方法从字
符串的最后一个字符开始依照从尾到头的方式查找。
C# 从入门到实践
19.2.8 获取子串
获取子串是指从字符串中获取指定的子字符串,该功能由
String 类的SubString() 方法实现,它的原型如下。
 public string SubString(int startIndex) ,获取字符串中从
startIndex 位置开始的子字符串。
 public string SubString(int startIndex,int length) ,获取字
符串中从startIndex 位置开始的、最大长度为length 的子
字符串。
C# 从入门到实践
19.2.9 格式化字符串
格式化字符串是指将字符串转化为指定格式的字符串,该功
能由String 类的Format() 方法实现。
1 .数字格式化
2 .日期和时间格式化
C# 从入门到实践
19.3 可变字符串处理
可变字符串(由StringBuilder 类表示)是一种动态字符串,
它是可以被动态修改的。动态修改可变字符串的方法主
要包括插入字符串、追加字符串、移除字符串、替换字
符串、复制字符串等。下面将详细介绍这些方法。
C# 从入门到实践
19.3.1 插入字符串
插入字符串是将新的字符串插入到字符串的指定位置,该功
能由StringBuilder 类的Insert() 方法实现。Insert() 方法存
在多种原型,常见的原型如下。
 public StringBuilder Insert(int index,string value) ,将
value 插入到字符串的index 指定的位置。
 public StringBuilder Insert(int index,string value,int
count) ,将value 插入到字符串的index 指定的位置,并重
复执行该超载count 次。
C# 从入门到实践
19.3.2 追加字符串
追加字符串是指将指定的字符或字符串追加到字符串的末尾
,该功能由StringBuilder 类的Append() 、AppendLine() 和
AppendFormat() 方法实现。其中,AppendLine() 方法在
追加指定的字符串之后,还追加一个换行符号;
AppendFormat() 方法首先格式化被追加的字符串,然后
将其追加到字符串。下面仅仅介绍Append() 方法的用法

C# 从入门到实践
19.3.3 移除字符串
移除字符串是从字符串中指定位置开始移除其后的指定数量
的字符,该功能由StringBuilder 类的Remove() 方法实现
,它的原型如下。
 public StringBuilder Remove(int startIndex,int length) 。
从字符串中startIndex 位置处开始移除其后的count 个的字

 startIndex 参数表示移除的开始位置,count 参数表示被移
除字符串的最大字符串数量。
C# 从入门到实践
19.3.4 替换字符串
替换字符是指将字符串中指定字符替换为新的字符,或者将
指定的字符串替换为新的字符串,该功能由StringBuilder
类的Replace() 方法实现。
C# 从入门到实践
19.3.5 复制字符串
复制字符串是指将字符串的内容复制到指定的字符数组中,
该功能由StringBuilder 类的CopyTo() 方法实现,它的原
型如下。
public void CopyTo(int sourceIndex,char[] destination,int
destinationIndex,int count) 。
sourceIndex 参数指定被复制字符串中的开始位置;
destination 参数指定将字符复制到的字符数组,用来保存
被复制的字符;destinationIndex 参数指定保存复制字符
的数组中的起始位置;count

日期和时间处理
日期和时间处理是C# 编程中最为常见的操作之一。在.NET
Framework 中,与日期和时间相关的结构为DateTime 和
TimeSpan 。DateTime 结构表示时间上的某一刻,
TimeSpan 结构表示时间间隔。本章将讲解C# 编程中的日
期和时间处理,主要介绍以下知识点。
 DateTime 结构;
 TimeSpan 结构;
  格式化日期和时间;
  计算日期和时间差;
  追加日期和时间。
C# 从入门到实践
20.1 DateTime 结构
DateTime 是一个结构,且为值类型,表示时间上的一刻,
包括日期和时间两部分。DateTime 表示的值的范围为公
元0001 年1 月1 日午夜12:00:00 到公元9999 年12 月31 日晚上
11:59:59 之间的日期和时间。DateTime 表示的日期和时间
由年、月、日、时、分、秒,以及分隔符组成。最常用
的一种格式如下所示。
yyyy-MM-dd hh:mm:ss
C# 从入门到实践
20.1.1 字段
DateTime 结构只包含两个静态只读字段:MaxValue 和
MinValue ,它们的具体说明如下。
 MaxValue 字段,DateTime 的最大可能值,它的值为9999
年12 月31 日 23:59:59.9999999 。
 MinValue 字段,DateTime 的最小可能值,它的值为0001
年1 月1 日 00:00:00.0000000 。
C# 从入门到实践
20.1.2 属性
DateTime 结构包含16 个属性。其中,Now 、Today 和
UtcNow 属性为静态属性,其他属性为实例属性。通过这
16 个属性,可以获取时间的值或时间某一个部分的值,
如年份、月份、日期、小时、分钟、秒等。
C# 从入门到实践
20.1.3 方法
DateTime 结构共包括个38 方法,其中,静态方法13 个,实
例方法25 个。
C# 从入门到实践
20.2 TimeSpan 结构
TimeSpan 结构表示一个时间间隔或持续时间,可以按照正
负天数、小时数、分钟数、秒数以及秒的小数部分进行
度量。
TimeSpan 值表示为“[-]d.hh:mm:ss.ff” 格式的字符串。减号
(可选)表示负时间间隔;d 分量表示天数;hh 表示小时
数(24 小时制);mm 表示分钟数;ss 表示秒的整数部分
,ff 为秒的小数部分。如“9.1:40:58” 表示9 天、1 小时、
40 分钟和58 秒。
C# 从入门到实践
20.2.1 字段
TimeSpan 结构包含以下8 个静态字段,如MaxValue 、MinValue
等,它们的具体说明如下。
 MaxValue 字段,最大的TimeSpan 值,它的值为
+10675199.02:48:05.4775807 。
 MinValue 字段,最小的TimeSpan 值,它的值为-
10675199.02:48:05.4775808 。
 Zero 字段,零TimeSpan 值,它的值为00:00:00 。常常用于与
其他TimeSpan 对象的比较。
 TicksPerDay 字段,一天中的刻度数,它的值为8,640 亿。
 TicksPerHour 字段,1 小时的刻度数,它的值为360 亿。
 TicksPerMinute 字段,1 分钟的刻度数,它的值为6 亿。
 TicksPerSecond 字段,1 秒钟的刻度数,它的值为1,000 万。
 TicksPerMillisecond 字段,1 毫秒的刻度数,它的值为1 万。
C# 从入门到实践
20.2.2 属性
TimeSpan 结构包含11 个实例属性。通过这11 个属性,可以获取
TimeSpan 对象的天数、小时数、分钟数、秒数、毫秒数等。
TimeSpan 结构的属性具体说明如表20.4 所示。
属性  说明
Days  获取TimeSpan对象的整天数。
Hours  获取TimeSpan对象的整小时数。
Minutes  获取TimeSpan对象的整分钟数。
Seconds  获取TimeSpan对象的整秒数。
Milliseconds  获取TimeSpan对象的整毫秒数。
Ticks  获取TimeSpan对象的刻度数。
TotalDays  获取TimeSpan对象的天数的整数部分和小数部分。
TotalHours  获取TimeSpan对象的小时数的整数部分和小数部分。
TotalMinutes  获取TimeSpan对象的分钟数的整数部分和小数部分。
TotalSeconds  获取TimeSpan对象的秒数的整数部分和小数部分。
TotalMilliseconds  获取TimeSpan对象的毫秒数的整数部分和小数部分。
C# 从入门到实践
20.2.3 方法
TimeSpan 结构共包括个16 方法,其中,静态方法10 个,实例方法6
个。TimeSpan 结构的静态方法具体说明如表20.5 所示。
方法  说明
Compare()  比较两个TimeSpan值,它的返回值可以是0、-1或1。
Equals()  判断两个TimeSpan结构的实例是否相等。如果是,则返回true,否则返回false。
FromDays()  根据指定的天数,创建一个TimeSpan结构的实例。
FromHours()  根据指定的小时数,创建一个TimeSpan结构的实例。
FromMinutes()  根据指定的分钟数,创建一个TimeSpan结构的实例。
FromSeconds()  根据指定的秒数,创建一个TimeSpan结构的实例。
FromMilliseconds()  根据指定的毫秒数,创建一个TimeSpan结构的实例。
FromTicks()  根据指定的刻度数,创建一个TimeSpan结构的实例。
Parse()  将一个字符串转换为其相应的TimeSpan对象。
TryParse()  将一个字符串转换为其相应的TimeSpan对象。
C# 从入门到实践
20.3 日期和时间的常用操作
DateTime 结构是C# 编程中最为常用的一个结构之一。日期
和时间的常用操作主要包括日期和时间的格式化、计算
日期和时间的差、追加日期和时间等。本小节将详细介
绍这些操作。
C# 从入门到实践
20.3.1 格式化
日期和时间格式化是指将DateTime 结构的实例转换为其相对应的
某一种字符串表示形式。DateTime 结构提供了多个以“To” 开头
的方法。这些方法可以将DateTime 对象转换为不同格式的字符串
形式,常用的方法如表20.7 所示。
方法  说明
ToString()  转换为其等效的字符串表示形式。
ToLongDateString() 转换为其等效的长日期字符串表示形式。
ToShortDateString() 转换为其等效的短日期字符串表示形式。
ToLongTimeString() 转换为其等效的长时间字符串表示形式。
ToShortTimeString() 转换为其等效的短时间字符串表示形式。
C# 从入门到实践
20.3.2 计算时间差
计算时间差可以使用Subtract() 方法。该方法可以计算两个
时间的差值,也可以计算时间和时间间隔的差值。它存
在以下两种重载形式。
 public TimeSpan Subtract(DateTime value) ,从当前实例
中减去指定的日期和时间,返回类型为TimeSpan 。其中
,value 参数表示被减去的日期和时间。
 public DateTime Subtract(TimeSpan value) ,从当前实例
中减去指定的时间间隔,返回类型为DateTime 。其中,
value 参数表示被减去的时间间隔。
C# 从入门到实践
20.3.3 追加时间
追加时间是指将指定的时间或时间部分(如年份、月份、小时等
)追加到一个时间上,并计算出一个新的时间。DateTime 结构提
供多个以“Add” 开头的方法可以实现追加时间的功能,这些方法
的具体说明如表20.8 所示。
方法  说明
Add()  将指定的TimeSpan的值加到指定的时间上。
AddYears()  将指定的年份数加到指定的时间上。
AddMonths()  将指定的月份数加到指定的时间上。
AddDays()  将指定的天数加到指定的时间上。
AddHours()  将指定的小时数加到指定的时间上。
AddMinutes()  将指定的分钟数加到指定的时间上。
AddSeconds()  将指定的秒数加到指定的时间上。
AddMilliseconds()  将指定的毫秒数加到指定的时间上。
AddTicks()  将指定的刻度数加到指定的时间上。

IO 流、目录和文件处理
IO 流、目录和文件处理是系统最为常见的IO 操作。IO 流为
文件、输入/ 输出设备、内部进程通信管道、TCP/IP 套接
字提供了操作方法。目录处理包括创建、删除、移动、
遍历目录等操作,文件处理包括创建、写入、读取、移
动、删除文件等操作。本章将讲解IO 流、目录和文件处
理,主要介绍以下知识点。
  文件流;
  内存流;
  目录处理;
  文件处理。
C# 从入门到实践
21.1 IO 流
流是字节序列的抽象概念,如文件、输入/ 输出设备、内部
进程通信管道、TCP/IP 套接字等。Stream 类是所有流的
抽象基类,它可以为流提供一般性视图,从而使得开发
人员不需要了解IO 设备的具体细节。与流相关的操作包
括以下3 个基本操作。
  读取流,即读取流中的内容。
  写入流,即将指定的内容写入到流中。
  流支持查找,即可以查找或设置流的当前位置。
C# 从入门到实践
21.1.1 文件流
FileStream (文件流)类公开以文件为主的Stream ,它既支
持同步读写操作,也支持异步读写操作。使用文件流可
以对文件进行读取、写入、打开和关闭操作,以及系统
相关操作的标准输入、标准输出等。
FileStream 类包括9 个属性,它们可以描述FileStream 类的实
例的特性,如流的长度(以字节为单位)、流的当前位
置、是否能够读或写或查询等。FileStream 类的属性的具
体说明如表21.1 所示。
C# 从入门到实践
21.1.2 内存流
MemoryStream 类可以用来创建其支持存储区为内存的流。
它可以封装内存中的存储的数据,这些数据的表现形式
为无符号字节数组。并且,通过MemoryStream 类的实例
可以直接在内存中访问该数组。特别地,使用内存流可
以降低应用程序对临时缓冲区和临时文件的需要。
C# 从入门到实践
21.2 目录处理
在.NET Framework 中,用来处理目录的类主要包括
Directory 和DirectoryInfo 类。Directory 类是一个静态类
,它公开用于创建、移动、枚举目录和子目录的静态方
法。DirectoryInfo 类是一个密封类,从FileSystemInfo 类
派生,并公开用于创建、移动、枚举目录和子目录的实
例方法。
C# 从入门到实践
21.2.1 Directory 类
Directory 类是一个静态类,它只包含多个静态方法,用来创建、移
动、枚举目录和子目录。其中,常用的静态方法具体说明如表21.5
所示。
方法  说明
CreateDirectory()  创建指定路径的目录。
Delete()  删除指定的目录。
Exists()  判断指定路径的目录是否存在。如果存在,返回true,否则返回false。
Move()  将指定文件或目录及其内容移到新位置。
GetParent()  获取指定路径的父目录。
GetCurrentDirectory()  获取应用程序的当前工作目录。
SetCurrentDirectory()  设置应用程序的当前工作目录。
GetDirectories()  获取指定目录中子目录。
GetDirectoryRoot()  获取指定路径的卷信息或根信息。
GetFiles()  获取指定目录中的文件。
GetFileSystemEntries()  获取指定目录中所有文件和子目录。
GetLogicalDrives()  获取当前计算机上的逻辑驱动器。
GetCreationTime()  获取目录的创建日期和时间。
SetCreationTime()  设置指定的文件或目录的创建日期和时间。
GetLastAccessTime()  获取上次访问指定文件或目录的日期和时间。
SetLastAccessTime()  设置上次访问指定文件或目录的日期和时间。
GetLastWriteTime()  获取上次写入指定文件或目录的日期和时间。
SetLastWriteTime()  设置上次写入目录的日期和时间。
C# 从入门到实践
21.2.2 DirectoryInfo 类
DirectoryInfo 类是一个密封类,它可以用来创建、移动、枚举目录
和子目录。DirectoryInfo 类包括4 个属性,可以用来获取目录的名
称、父目录等,具体说明如表21.6 所示。
属性  说明
Exists  判断指定目录是否存在。如果存在,则返回true,否则返回false。
Name  获取目录的名称。
Parent  获取指定子目录的父目录。
Root  获取路径的根部分。
C# 从入门到实践
21.2.3 创建目录
创建目录可以使用以下3 种方法中的任何一种。
 Directory 类的CreateDirectory() 方法,用来创建一个目录

 DirectoryInfo 类的Create() 方法,用来创建一个目录。
 DirectoryInfo 类的CreateSubdirectory() 方法,用来创建
一个指定目录下的子目录。
C# 从入门到实践
21.2.4 删除目录
删除目录可以使用以下2 种方法中的任何一种。
 Directory 类的Delete() 方法,用来删除一个目录。
 DirectoryInfo 类的Delete() 方法,用来删除一个目录。
Directory 类的Delete() 方法存在以下两个原型。
 public static void Delete(string path) ,删除path 指定的目
录,且该目录必须为空目录。
 public static void Delete(string path,bool recursive) ,删除
path 指定的目录。recursive 参数指定是否删除该目录下的
所有内容(如子目录、文件等)。
C# 从入门到实践
21.2.5 移动目录
移动目录可以使用以下2 种方法中的任何一种。
 Directory 类的Move() 方法,将指定文件或目录及其内容
移到新位置。
 DirectoryInfo 类的MoveTo() 方法,将指定目录及其内容
移到新位置。
C# 从入门到实践
21.2.6 遍历目录
遍历目录是指获取该目录下的子目录或文件,主要存在一下
6 种方法。
 Directory 类的GetDirectories() 方法,获取指定目录中子
目录。
 Directory 类的GetFiles() 方法,获取指定目录中的文件。
 Directory 类的GetFileSystemEntries() 方法,获取指定目
录中所有文件和子目录。
 DirectoryInfo 类的GetDirectories() 方法,获取当前目录的
子目录。
 DirectoryInfo 类的GetFiles() 方法,获取当前目录的文件

 DirectoryInfo 类的GetFileSystemInfos() 方法,获取当前目
录的所有文件和子目录。
C# 从入门到实践
21.3 文件处理
在.NET Framework 中,用来处理文件的类主要包括File 和
FileInfo 类。File 类是一个静态类,它提供用于创建、复
制、删除、移动和打开文件的静态方法。FileInfo 类是一
个密封类,从FileSystemInfo 类派生,并提供创建、复制
、删除、移动和打开文件的实例方法。
C# 从入门到实践
21.3.1 File 类
File 类是一个静态类,它只包含多个静态方法,用来创建、
复制、删除、移动和打开文件。
C# 从入门到实践
21.3.2 FileInfo 类
FileInfo 类是一个密封类,它可以用来创建、复制、删除、移动和
打开文件的实例方法。FileInfo 类包括6 个属性,可以用来获取文
件的名称、完整路径等,具体说明如表21.9 所示。
属性  说明
Directory  获取父目录。
DirectoryName  获取文件的完整路径。
IsReadOnly  获取或设置当前文件是否为只读。
Exists  指定当前文件是否存在。
Length  获取当前文件的大小(字节)。
Name  获取文件的名称。
C# 从入门到实践
21.3.3 创建文件
创建文件可以使用File 类的Create() 方法或者FileInfo 类的
Create() 方法。
【 示例21-18 】 使用FileInfo 类的Create() 方法创建一个名称
为“my.ini” 的文件。
FileInfo fi = new FileInfo("my.ini");
fi.Create();
C# 从入门到实践
21.3.4 写入文件
存在多种方法,可以将指定内容写入到文件,如File 类的
OpenWrite() 方法、FileInfo 类的OpenWrite() 方法等。
C# 从入门到实践
21.3.5 读取文件
存在多种方法,可以从指定文件中读取内容,如File 类的
OpenRead() 方法、FileInfo 类的OpenRead() 方法等。
【 示例21-20 】 使用FileInfo 类的OpenRead() 方法从my.ini 文
件读取内容,并转换为一个字符串(保存为valuer ),最
终,将valuer 的内容显示在控制台。
C# 从入门到实践
21.3.6 移动文件
移动文件可以使用以下2 种方法中的任何一种。
 File 类的Move() 方法,将指定文件移到新位置。
 FileInfo 类的MoveTo() 方法,将指定文件移到新位置。
C# 从入门到实践
21.3.7 删除文件
删除文件可以使用以下2 种方法中的任何一种。
 File 类的Delete() 方法,将删除指定的文件。
 FileInfo 类的Delete() 方法,将删除指定的文件。
原创粉丝点击