[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控制的所有 ...
随机推荐
- MyEclipse 根据左括号或右括号查找另外一半
在MyEclipse 中如果代码嵌套太多,查找括号是一件非常头疼的事情,今天突然发现了一个快捷键(如下)可以直接定位到另外一半的位置 Ctrl+Shift+P,光标会自动跳到相应的花括号位置, 并且可 ...
- 分享一个在js中判断数据是undefined,NaN,null,的技巧
教大家如何在js中判断一个值是否是undefined,null,NaN,以及如何单独判断 平常开发过程中大家可能遇到一种问题,就是取页面某个值的时候获取不到这个var就是undefined了,如果是数 ...
- 小K的农场(差分约束,spfa)
题目描述 小K在MC里面建立很多很多的农场,总共n个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m个),以下列三种形式描述: 农场a比农场b至少多种植了c个单位的作 ...
- word 或者 WPS 使用两个目录的时候去掉中间的空格间隙
在生成图表目录时,发现Office word图表目录中多个标题之间的空行无法删除,我是自己建的标签,比如“图1-”.“图2-”…….“表1-”.“表2-”…… 发现“图1-”.“图2-”…….“表1- ...
- 常用模块 - datetime模块
一.简介 datetime是Python处理日期和时间的标准库. 1.datetime模块中常用的类: 类名 功能说明 date 日期对象,常用的属性有year, month, day time 时间 ...
- linux 学习第七天
一.bash 使用(for循环.while循环) 1.1.批量添加用户 1.2.查看用户是否存在 A.cut -d : -f 1 /etc/passwd B.id dream (id 用户名称) C ...
- md5加密+盐方式二
这类md5+盐加密是属于自定义盐值的简单方法! 1.导入架包 2.调用方法 DigestUtils.md5Hex(password);//加密方法 举例 方式一: password=DigestUti ...
- laravel 闪存
https://blog.csdn.net/ckdecsdn/article/details/52083093
- Python3 urllib 与 Python2 urllib的变化
Infi-chu: http://www.cnblogs.com/Infi-chu/ Py2.x: Urllib库 Urllin2库 Py3.x: Urllib库 变化: 在Pytho2.x中使用im ...
- (数据科学学习手札41)folium基础内容介绍
一.简介 folium是js上著名的地理信息可视化库leaflet.js为Python提供的接口,通过它,我们可以通过在Python端编写代码操纵数据,来调用leaflet的相关功能,基于内建的osm ...