[Clr via C#读书笔记]Cp14字符字符串和文本处理

Cp14字符字符串和文本处理

字符

System.Char结构,2个字节的Unicode,提供了大量的静态方法;可以直接强制转换成数值;

字符串

使用最频繁的类型;不可变;引用类型,在堆上分配,但是使用起来感觉好像是值类型,比如说不用new直接赋值,原因是CLR对字符串做了特殊的处理;

StringBuilder

因为字符串本身的不变性,所以每次进行各种操作都是生成一个新的字符串,多个字符串进行这种处理会影响到性能,所以推荐使用StringBuidler类进行处理;

字符串文化问题

语言和国家的影响

字符串留用

CLR利用字符串对照表来存储常用的字符串,如果有新字符串和之前的字符串一样的话,直接引用原来的字符串,从而提高效率,节省空间;类似之前的事件表的道理;

字符串池

类似字符串留用,只不过这个是编译器级别的;

String的一些方法和属性

基本上都是很常用的

高效率创建字符串

就是前面提到的StringBuilder类,了解它的成员和成员用途

ToString

默认返回对象所属的类型全名,可以override来显示其他信息;

IFormattable和IFormatProvider的作用

自定义格式化器

String.Format

格式化方法,最新的C#6支持$"hello{}world"的方式,更容易使用,本质还是String.Format;

解析字符串来获取对象Parse和TryParse

Parse解析失败的时候会抛出异常,而TryParse不会;用法VS的Intelisence会有提示,没有问题;
字符串本身必须满足格式要求,比如日期字符串,否则会解析失败;

编码:字符和字节的转换

文件读写;网络传输;的时候经常会见到;最常见的是UTF-8和UTF-16;
System.Text.Encoding类,GetEncoding,GetBytes等成员;

字节和字节流的编码和解码

解码存在的问题,System.Text.Decoder类;

Base-64

可以使用System.Convert中的方法

安全字符串

System.Security.SecureString

原文地址:https://www.cnblogs.com/newlifechou/p/8166340.html