[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
[Clr via C#读书笔记]Cp14字符字符串和文本处理的更多相关文章
- Redis设计与实现读书笔记——简单动态字符串
前言 项目里用到了redis数据结构,不想只是简单的调用api,这里对我的读书笔记做一下记录.原文地址: http://www.redisbook.com/en/latest/internal-dat ...
- CLR via c#读书笔记九:字符、字符串和文本处理
1.在.NET Framework中,字符总是表示成16位unicode代码值(关于unicode.utf8等可以到http://www.ruanyifeng.com/blog/2007/10/asc ...
- <NET CLR via c# 第4版>笔记 第14章 字符,字符串和文本处理
14.1 字符 三种数值类型与 Char 实例的相互转换: static void Main() { Char c; Int32 n; //方法一: 通过C#转型(强制类型转换)实现数字与字符的相互转 ...
- Redis 设计与实现读书笔记一 Redis字符串
1 Redis 是C语言实现的 2 C字符串是 /0 结束的字符数组 3 Redis具体的动态字符串实现 /* * 保存字符串对象的结构 */ struct sdshdr { // buf 中已占用空 ...
- Java读书笔记三(字符串)
1.介绍 本篇博客将对JAVA中的字符串类的基本知识进行介绍.主要字符串类的一些经常用法等内容. 2.字符串对象的创建 1.有两种形式.可是在开发中常常习惯于String 变量名的形式来进行操作. & ...
- clr via c#读书笔记五:常量和字段
1.常量是值从不变化的符号.只能定义编译器识别的基元类型的常量.如:Boolean,Char,Byte,SByte,Int16,UInt16,Int32,UInt32,Int64,Single,Dou ...
- CLR via C# 读书笔记---常量、字段、方法和参数
常量 常量是值从不变化的符号.定义常量符号时,它的值必须能在编译时确定.确定后,编译器将唱两只保存在程序集元数据中.使用const关键字声明常量.由于常量值从不变化,所以常量总是被视为类型定义的一部分 ...
- Clr Via C#读书笔记---I/O限制的异步操作
widows如何执行I/O操作 构造调用一个FileStream对象打开一个磁盘文件-----FileStream.Read方法从文件中读取数据(此时线程从托管代码转为本地/用户模式代码)- ...
- Clr Via C#读书笔记---计算限制的异步操作
线程池基础 1,线程的创建和销毁是一个昂贵的操作,线程调度以及上下文切换耗费时间和内存资源. 2,线程池是一个线程集合,供应你的用程序使用. 3,每个CLR有一个自己的线程池,线程池由CLR控制的所有 ...
随机推荐
- ARM v7-A 系列CPU的MMU隐射分析
ARM v7-A 系列CPU的MMU隐射分析 摘要:ARM v7-A系列的CPU加入了很多扩展,如多核处理器扩展.大物理地址扩展.TrustZone扩展.虚拟化扩展.若支持大的物理地址,则必须支持多核 ...
- IE下页面左偏移并页头空出一行解决方法
在其它浏览器下显示正常,包括360浏览器,在IE下,页面向左偏移,通过firebug查看,head标签为空,并且head标签里面的内容都跑到body标签内了,原因是有bom头,访问的页面或是加载,包含 ...
- 算法是什么(二)手写个链表(java)
算法是什么(二)手写个链表(java) liuyuhang原创,未经允许禁止转载 目录 算法是什么(〇) 很多语言的API中都提供了链表实现,或者扩展库中实现了链表. 但是更多的情况下,Map(或 ...
- Java设计模式六大原则-1
Java设计模式六大原则-1 做Java程序开发的每天都在使用JDK,Spring,SpringMvc,Mybatis,Netty,MINA等框架,但很少有人懂得背后的原理.即使打开跟下原码也是一头雾 ...
- Vue.js与 ASP.NET Core 服务端渲染功能整合
http://mgyongyosi.com/2016/Vuejs-server-side-rendering-with-aspnet-core/ 原作者:Mihály Gyöngyösi 译者:oop ...
- pastedeploy
3.1作用 不修改WSGI应用程序的情况下通过配置文件配置WSGI服务. filter:过滤器,滤网. pipline:管道 app:application 应用,在这个语境下我举个例子吧,lavab ...
- Redis(六):Redis的事务
Redis的事务目录导航: 是什么 能干嘛 怎么玩 3阶段 3特性 是什么 可以一次执行多个命令,本质是一组命令的集合.一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞 ...
- MySQL:数据存在则更新,不存在则插入
前提:表结构存在主键或唯一索引,插入数据包含主键或唯一索引而导致记录重复插入失败. 单条记录更新插入: ,,) ,b,c; 多条记录批量更新插入: ,,),(,,) ON DUPLICATE KEY ...
- spring作用
在SSH框假中spring充当了管理容器的角色.我们都知道hibernate用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的SQL语句.Struts是用来 ...
- 【LG2481】[SDOI2011]拦截导弹
[LG2481][SDOI2011]拦截导弹 题面 洛谷 题解 可以看出第一问就是一个有关偏序的\(LIS\),很显然可以用\(CDQ\)优化 关键在于第二问 概率\(P_i=\) \(总LIS数\) ...