



字符串不但在现实生活中应用广泛,而且在编程中也经常使用。下面对字符串的概述、字符串的应用及字符串的各种操作进行详细讲解。
.NET Framework中通常使用string表示字符串的标识符,string是String类的别名,它们的用法完全相同,这个就好比对计算机通常称为电脑一样。string类型表示Unicode字符组成的字符串,它的值是不可改变的,这就是说一旦创建String类的对象,就不能够修改。
字符串是Unicode字符的有序集合,用于表示文本。String对象是System.Char对象的有序集合,用于表示字符串。String对象的值是该有序集合的内容,并且该值是不可变的。正是字符构成了字符串,根据字符在字符串中的不同位置,字符在字符串中有一个索引值,可以通过索引值获取字符串中的某个字符。字符在字符串中的索引从零开始,例如,字符串“Hello World”中的第一个字符为H,而“H”在字符串中的索引顺序为0。
字符串与字符的关系相当于公司与员工的关系,公司由所有的员工组成,每个员工都有自已的编号,相当于字符在字符串中的索引,只不过索引是从零开始的。
在声明字符串变量时,可以使用string类型加变量名称来表示。
【例5.5】 声明一一个名称为str的字符串,代码如下:
string str;
声明完字符串变量之后,需要对其进行初始化,C#中使用赋值运算符(=)来对字符串进行初始化,代码如下:
str = '我喜欢QQ农场';
另外,还可在声明字符串变量的同时进行初始化。
【例5.6】 声明一一个名称为str的字符串,并将其初始化为“我喜欢魔兽世界游戏”,代码如下:
string str = '我喜欢魔兽世界游戏';
学习手册
说明
String类所定义的变量是一个引用类型,可以对string类型的变量进行null赋值。
【例5.7】 创建一一个控制台应用程序,声明一一个字符串变量,然后获取字符串中的某个字符,代码如下:
程序的运行结果如图5.4所示。
图5.4 字符串应用
代码中采取在字符串变量后面加一个括号,并在括号中给出索引顺序的方法获取相应的字符。这是数组变量通用的索引方法。str[0]获得的是str中的第一个字符,依次类推。
在C#中最常见的比较字符串的方法有Compare、CompareTo和Equals方法等,这些方法都归属于String类。下面对这3种方法进行详细地介绍。
Compare方法用来比较两个字符串是否相等,它有很多个重载方法,其中最常用的两种方法如下:
strA和strB:代表要比较的两个字符串。
ignorCase:是一个布尔类型的参数,如果这个参数的值是true,那么在比较字符串时就忽略大小写的差别。Compare方法是一个静态方法,所以在使用时,可以直接引用。
当strA小于strB时,返回值为-1;当strA等于strB时,返回值为0;当strA大于strB时,返回值为1。
【例5.8】 创建一一个控制台应用程序,声明两个字符串变量,然后使用Compare方法比较两个字符串是否相等,代码如下:
程序的运行结果如图5.5所示。
图5.5 应用Compare方法比较字符串
学习手册
注意
比较字符串并非比较字符串长度的大小,而是比较字符串在英文字典中的位置。比较字符串按照字典排序的规则,判断两个字符串的大小。在英文字典中,前面的单词小于后面的单词。
CompareTo方法与Compare方法相似,都可以比较两个字符串是否相等,不同的是CompareTo方法以实例对象本身与指定的字符串作比较,其语法如下:
public int CompareTo (string strB)
【例5.9】 对字符串strA和字符串strB进行比较,代码如下:
strA.CompareTo(strB)
如果strA与strB的值相等则返回0;如果strA大于strB的值,则返回1;否则返回-1。
【例5.10】 创建一一个控制台应用程序,使用CompareTo方法比较两个字符串,代码如下:
由于字符串str1比字符串str2在字典中的位置靠前,所以运行结果为-1。
Equals方法主要用于比较两个字符串是否相同,如果相同返回值是true,否则为false,其常用的两种方式的语法如下:
value:是与实例比较的字符串。
a和b:是要进行比较的两个字符串。
若两个字符串相同,返回true;否则返回false。
【例5.11】 创建一一个控制台应用程序,声明两个字符串变量,然后使用Equals方法比较两个字符串是否相同,代码如下:
程序的运行结果如图5.6所示。
图5.6 应用Equals方法比较字符串
学习手册
说明
Equals方法执行顺序(区分大小写和区域性)比较。
在C#中,String类提供了一个静态的Format方法,用于将字符串数据格式化成指定的格式,其语法格式如下:
Public static string Format(string format, obj ect obj);
format:用来指定字符串所要格式化的形式。
obj:要被格式化的对象。
返回值:format的一个副本。
学习手册
说明
format 参数由零个或多个文本序列与零个或多个索引占位符混合组成,其中索引占位符称为格式项,它们与此方法的参数列表中的对象相对应。格式设置过程将每个格式项替换为相应对象值的文本表示形式。格式项的语法是 {索引[,对齐方式][:格式字符串]},它指定了一个强制索引、格式化文本的可选长度和对齐方式,以及格式说明符字符的可选字符串,其中格式说明符字符用于控制如何设置相应对象的值的格式。
习手
【例5.12】 创建一一个控制台应用程序,声明两个string类型的变量strDoing和strWorking,然后使用Format方法格式化这两个string类型变量,最后输出格式化后的字符串。代码如下:
程序的运行结果如图5.7所示。
5.7 格式化字符串
如果希望日期时间按照某种格式输出,那么可以使用Format方法将日期时间格式化成指定的格式。在C#中,已经提供了一些用于日期时间的格式规范,具体描述如表5.3所示。
表5.3 用于日期时间的格式规范说明
下面通过一个实例,演示如何使用日期时间的格式规范,以格式规范D为例。
【例5.13】 创建一一个控制台应用程序,声明一一个DateTime类型的变量dt,用于获取系统的当前日期时间,然后通过使用格式规范F将日期时间格式化为“YYYY年MM月dd日 hh:mm:ss”的格式。代码如下:
程序的运行结果如图5.8所示。
图5.8 格式化日期
String类提供了一个Substring方法,该方法可以截取字符串中指定位置和指定长度的字符,其语法格式如下:
public string Substring (int startIndex,int length)
startIndex:子字符串的起始位置的索引。
length:子字符串中的字符数。
返回值:一个string,它等于此实例中从startIndex开始的长度为length的子字符串,如果 startIndex等于此实例的长度且length为零,则为空。
【例5.14】 创建一一个控制台应用程序,声明两个string类型的变量strA和strB,并将strA初始化为“热血尽,化尘与土”,然后使用Substring方法从索引4开始截取4个字符,赋值给strB,并输出strB。代码如下:
程序的运行结果为“化尘与土”。
学习手册
说明
在用Substring方法载取字符串时,如果length参数的长度大于截取字符串的长度,将从起始位置的索引处截取之后的所有字符。
【例5.15】 创建一一个控制台应用程序,声明一一个字符串类型的变量,用来存储一一个文件的全路径;然后使用String类的Substring方法从该全路径中分别截取文件的名称及路径。代码如下:
程序运行结果如图5.9所示。
图5.9 使用Substring方法获取文件名及路径