字符字符串和文本处理

字符字符串和文本处理

ID:34759300

大小:55.06 KB

页数:3页

时间:2019-03-10

字符字符串和文本处理_第1页
字符字符串和文本处理_第2页
字符字符串和文本处理_第3页
资源描述:

《字符字符串和文本处理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、字符、字符串和文本处理1.1字符在.NETFramework中,字符都是用16位Unicode编码(UTF-16)的(编译时用UTF-16编码成2进制存到硬盘,程序运行时再用utf-16解码显示代码中的字符串,在内存中相应的字节流就是用UTF-16编码过的),也就是说所有字符都是占2个字节16位,这简化了国际化应用程序的开发。Unicode字符集有很多种编码方案,常用的有:UTF-16:所有字符被编码成2个字节UTF-8:十进制小于128的字符被编码成1个字节(可表示欧美地区使用的字符),128~2047的字符被编码成2

2、个字节(可表示欧洲和中东语言),大于2047的字符被编码成3个字节(可表示东亚地区的语言)UTF-32:所有字符都被编码成4个字节Unicode字符集还有个ASCII编码方案,这种编码只能将小于128的16位字符转换成单字节,而其他超过127的字符都会丢失。GB2312等其他字符集(这些字符集可能只有一种同名编码方案)针对Char的一个实例,可以调用Char类型的静态方法GetUnicodeCategory,这个方法返回的是System.Globalization.UnicodeCategory枚举类型的一个值。这个值指

3、出该字符是控制字符、货币符号、小写字母、大写字母、标点符号、数字符号还是其他Unicode标准定义的符号。其他一些静态方法如IsDigit、IsLetter、IsUpper、IsControl、IsSymol等都在内部调用了GetUnicodeCategory,并简单返回true或false。注意,所以这些方法要么获取单个字符作为参数,要么获取一个String以及目标字符在这个String中的索引作为参数。另外,可以调用静态方法ToLowerInvariant或者ToUpperInvariant以一种忽略语言文化的方式,

4、将一个字符转化为小写或大写。如果调用ToLower和ToUpper方法,在转换时要使用与线程相关的语言文化信息,语言文化信息是这两个方法在内部查询System.Threading.Thread类的静态CurrentCulture属性来获得的。还可以向这些方法传递CultureInfo类的一个实例来具体指定一种语言文化。ToLower和ToUpper之所以需要语言文化信息,是因为字母的大小写转换是依赖于语言文化操作的。可以使用三种技术实现各种数值类型与Char实例的相互转换,下面按照优先顺序列出这些技术。 *转型(强制类型

5、转换)要将一个Char转换成一个数值(如Int32),最简单的方法是强制类型转换。在三种技术中,这种技术效率最高,因为编译器会生成IL(IntermediateLanguage中间语言)指令来执行转换,不必调用任何方法。*使用Convert类型 System.Convert类型提供了几个静态方法来实现Char和数值类型的相互转换。这些方法都以checked方式来执行转换,因此一旦发现转换造成数据丢失,就会抛出一个OverflowException异常。*使用IConvertible接口 Char类型和FCL中的所有数值类

6、型都实现了IConvertible接口。该接口定义了像ToUInt16和ToChar这样的方法。但是这种技术效率最差,因为在值类型上调用一个接口方法,要求对实例进行装箱(Char和所有数值类型都是值类型)。如果某个类型不能转换(比如Char转换成Boolean),或者转换造成数据的丢失,IConvertible的方法会抛出一个System.InvalidCastException异常。以下代码简单演示如何使用这三种技术 ViewCode1.2System.String类型1.2.1构造字符串一个String代表一个不可变

7、的顺序字符集。String类型直接派生自Object,所以它是一个引用类型。因此String对象总是存在于堆上,永远不会跑到线程栈。许多编程语言都将String视为一个基元类型----可以再源代码中直接表示文本常量字符串(strings="hi");编译器将这些文本常量字符串放到模块的元数据中,并在运行时加载和引用它们。在C#中,不能使用new操作符从一个文本常量字符串构造一个String对象。对于换行符、回车符和退格符这样的特殊字符,C#采用的是C/C++开发人员熟悉的转义机制:1//包含回车符和换行符的字符串2str

8、ings="hirthere";34//NewLine是System.Environment类型定义的一个属性,NewLine属性是依赖于平台的,它在任何平台上都能正确工作,建议使用这种方式5strings="hi"+Environment.NewLine+"there";可以使用C#的+操作符将几个字符串连接

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。