字符、字符串及文本处理.docxVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
字符、字符串及文本处理

 HYPERLINK /lwenwen/p/3278108.html 字符、字符串和文本处理 1.1字符 在.NET Framework中,字符都是用16位Unicode编码(UTF-16)的(编译时用UTF-16编码成2进制存到硬盘,程序运行时再用utf-16解码显示代码中的字符串,在内存中相应的字节流就是用UTF-16编码过的),也就是说所有字符都是占2个字节16位,这简化了国际化应用程序的开发。Unicode字符集有很多种编码方案,常用的有: UTF-16:所有字符被编码成2个字节 UTF-8:十进制小于128的字符被编码成1个字节(可表示欧美地区使用的字符),128~2047的字符被编码成2个字节(可表示欧洲和中东语言),大于2047的字符被编码成3个字节(可表示东亚地区的语言) UTF-32:所有字符都被编码成4个字节 Unicode字符集还有个ASCII编码方案,这种编码只能将小于128的16位字符转换成单字节,而其他超过127的字符都会丢失。 GB2312等 HYPERLINK /lucas-zong/articles/2065689.html \t _blank 其他字符集(这些字符集可能只有一种同名编码方案) 针对Char的一个实例,可以调用Char类型的静态方法Get Unicode Category,这个方法返回的是System. Globalization. Unicode Category枚举类型的一个值。这个值指出该字符是控制字符、货币符号、小写字母、大写字母、标点符号、数字符号 还是其他Unicode标准定义的符号。 其他一些静态方法如IsDigit、IsLetter、IsUpper、IsControl、IsSymol等都在内部调用了Get Unicode Category,并简单返回true或false。注意,所以这些方法要么获取单个字符作为参数,要么获取一个String以及目标字符在这个String中的索引作为参数。 另外,可以调用静态方法To Lower Invariant或者To Upper Invariant以一种忽略语言文化的方式,将一个字符转化为小写或大写。如果调用To Lower和To Upper方法,在转换时要使用与线程相关的语言文化信息,语言文化信息是这两个方法在内部查询System. Threading. Thread类的静态Current Culture属性来获得的。还可以向这些方法传递Culture Info类的一个实例来具体指定一种语言文化。To Lower和To Upper之所以需要语言文化信息,是因为字母的大小写转换是依赖于语言文化操作的。 可以使用三种技术实现各种数值类型与Char实例的相互转换,下面按照优先顺序列出这些技术。 ? *转型(强制类型转换)要将一个Char转换成一个数值(如Int32),最简单的方法是强制类型转换。在三种技术中,这种技术效率最高,因为编译器会生成IL(Intermediate Language中间语言)指令来执行转换,不必调用任何方法。 *使用Convert类型?System. Convert类型提供了几个静态方法来实现Char和数值类型的相互转换。这些方法都以checked方式来执行转换,因此一旦发现转换造成数据丢失,就会抛出一个Overflow Exception异常。 *使用I Convertible接口?Char类型和FCL中的所有数值类型都实现了I Convertible接口。该接口定义了像ToUInt16和To Char这样的方法。但是这种技术效率最差,因为在值类型上调用一个接口方法,要求对实例进行装箱(Char和所有数值类型都是值类型)。如果某个类型不能转换(比如Char转换成Boolean),或者转换造成数据的丢失,I Convertible的方法会抛出一个System. Invalid Cast Exception异常。 以下代码简单演示如何使用这三种技术 ?View Code 1.2 System. String类型 1.2.1 构造字符串 一个String代表一个不可变的顺序字符集。String类型直接派生自Object,所以它是一个引用类型。因此String对象总是存在于堆上,永远不会跑到线程栈。许多编程语言都将String视为一个基元类型----可以再源代码中直接表示文本常量字符串(string s=hi); 编译器将这些文本常量字符串放到模块的元数据中,并在运行时加载和引用它们。 在C#中,不能使用new操作符从一个文本常量字符串构造一个String对象。 对于换行符、回车符和退格符这样的特殊字符,C#采用的是C/C++开发人员熟悉的转义机制: 1 // 包含回车符和换行符的字符串 2 st

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档