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字符字符串和文本处理的更多相关文章

  1. Redis设计与实现读书笔记——简单动态字符串

    前言 项目里用到了redis数据结构,不想只是简单的调用api,这里对我的读书笔记做一下记录.原文地址: http://www.redisbook.com/en/latest/internal-dat ...

  2. CLR via c#读书笔记九:字符、字符串和文本处理

    1.在.NET Framework中,字符总是表示成16位unicode代码值(关于unicode.utf8等可以到http://www.ruanyifeng.com/blog/2007/10/asc ...

  3. <NET CLR via c# 第4版>笔记 第14章 字符,字符串和文本处理

    14.1 字符 三种数值类型与 Char 实例的相互转换: static void Main() { Char c; Int32 n; //方法一: 通过C#转型(强制类型转换)实现数字与字符的相互转 ...

  4. Redis 设计与实现读书笔记一 Redis字符串

    1 Redis 是C语言实现的 2 C字符串是 /0 结束的字符数组 3 Redis具体的动态字符串实现 /* * 保存字符串对象的结构 */ struct sdshdr { // buf 中已占用空 ...

  5. Java读书笔记三(字符串)

    1.介绍 本篇博客将对JAVA中的字符串类的基本知识进行介绍.主要字符串类的一些经常用法等内容. 2.字符串对象的创建 1.有两种形式.可是在开发中常常习惯于String 变量名的形式来进行操作. & ...

  6. clr via c#读书笔记五:常量和字段

    1.常量是值从不变化的符号.只能定义编译器识别的基元类型的常量.如:Boolean,Char,Byte,SByte,Int16,UInt16,Int32,UInt32,Int64,Single,Dou ...

  7. CLR via C# 读书笔记---常量、字段、方法和参数

    常量 常量是值从不变化的符号.定义常量符号时,它的值必须能在编译时确定.确定后,编译器将唱两只保存在程序集元数据中.使用const关键字声明常量.由于常量值从不变化,所以常量总是被视为类型定义的一部分 ...

  8. Clr Via C#读书笔记---I/O限制的异步操作

    widows如何执行I/O操作      构造调用一个FileStream对象打开一个磁盘文件-----FileStream.Read方法从文件中读取数据(此时线程从托管代码转为本地/用户模式代码)- ...

  9. Clr Via C#读书笔记---计算限制的异步操作

    线程池基础 1,线程的创建和销毁是一个昂贵的操作,线程调度以及上下文切换耗费时间和内存资源. 2,线程池是一个线程集合,供应你的用程序使用. 3,每个CLR有一个自己的线程池,线程池由CLR控制的所有 ...

随机推荐

  1. ARM v7-A 系列CPU的MMU隐射分析

    ARM v7-A 系列CPU的MMU隐射分析 摘要:ARM v7-A系列的CPU加入了很多扩展,如多核处理器扩展.大物理地址扩展.TrustZone扩展.虚拟化扩展.若支持大的物理地址,则必须支持多核 ...

  2. IE下页面左偏移并页头空出一行解决方法

    在其它浏览器下显示正常,包括360浏览器,在IE下,页面向左偏移,通过firebug查看,head标签为空,并且head标签里面的内容都跑到body标签内了,原因是有bom头,访问的页面或是加载,包含 ...

  3. 算法是什么(二)手写个链表(java)

    算法是什么(二)手写个链表(java)   liuyuhang原创,未经允许禁止转载 目录 算法是什么(〇) 很多语言的API中都提供了链表实现,或者扩展库中实现了链表. 但是更多的情况下,Map(或 ...

  4. Java设计模式六大原则-1

    Java设计模式六大原则-1 做Java程序开发的每天都在使用JDK,Spring,SpringMvc,Mybatis,Netty,MINA等框架,但很少有人懂得背后的原理.即使打开跟下原码也是一头雾 ...

  5. Vue.js与 ASP.NET Core 服务端渲染功能整合

    http://mgyongyosi.com/2016/Vuejs-server-side-rendering-with-aspnet-core/ 原作者:Mihály Gyöngyösi 译者:oop ...

  6. pastedeploy

    3.1作用 不修改WSGI应用程序的情况下通过配置文件配置WSGI服务. filter:过滤器,滤网. pipline:管道 app:application 应用,在这个语境下我举个例子吧,lavab ...

  7. Redis(六):Redis的事务

    Redis的事务目录导航: 是什么 能干嘛 怎么玩 3阶段 3特性 是什么 可以一次执行多个命令,本质是一组命令的集合.一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其它命令插入,不许加塞 ...

  8. MySQL:数据存在则更新,不存在则插入

    前提:表结构存在主键或唯一索引,插入数据包含主键或唯一索引而导致记录重复插入失败. 单条记录更新插入: ,,) ,b,c; 多条记录批量更新插入: ,,),(,,) ON DUPLICATE KEY ...

  9. spring作用

    在SSH框假中spring充当了管理容器的角色.我们都知道hibernate用来做持久层,因为它将JDBC做了一个良好的封装,程序员在与数据库进行交互时可以不用书写大量的SQL语句.Struts是用来 ...

  10. 【LG2481】[SDOI2011]拦截导弹

    [LG2481][SDOI2011]拦截导弹 题面 洛谷 题解 可以看出第一问就是一个有关偏序的\(LIS\),很显然可以用\(CDQ\)优化 关键在于第二问 概率\(P_i=\) \(总LIS数\) ...