第十二章 管理类型(In .net4.5) 之 操作字符串
1. 概述
本章包括 字符串基本操作 以及 查找、遍历、格式化字符串。
2. 主要内容
2.1 在.net平台中使用字符串
C#中,string是用来保存文本信息的。是一个被当做值类型使用的引用类型。
C#中,string对象是不可变的。每次更改都会重新创建一个string对象。.net内部有称为字符串驻留(interning)的机制来优化效率。
2.2 操作字符串
① StringBuilder
StringBuilder 会使用内部的字符串缓存来提高效率。甚至可以允许修改内部某一个字符。
当操作不定数量的字符串时,StringBuilder是较好的选择。
StringBuilder sb = new StringBuilder(string.Empty); for (int i = ; i < ; i++)
{
sb.Append("x");
}
② StringWriter 和 StringReader
两者都使用StringBuilder来实现功能。
2.3 查询字符串
① IndexOf 和 LastIndexOf
string value = "My sample value";
int indexOfp = value.IndexOf('p'); // returns 6
int lastIndexOfm = value.LastIndexOf('m'); //returns 5
② StartsWith 和 EndsWith
string value = "<mycustomeinput>";
if (value.StartsWith("<")) { }
if (value.EndsWith(">")) { }
③ SubString
④ 正则表达式
string pattern = "(Mr\\.? | Mrs\\.? | Miss | Ms\\.? )";
string[] names = { "Mr. Henry Hunt", "Ms. Sara Samuels",
"Abraham Adams", "Ms. Nicole Norris"}; foreach (string name in names)
Console.WriteLine(Regex.Replace(name, pattern, String.Empty));
2.4 遍历字符串
string实现了IEnumerable 和 IEnumerable<Char> 接口。可用foreach遍历。
2.5 格式化字符串
DateTime d = new DateTime(, , );
CultureInfo provider = new CultureInfo("en-US");
Console.WriteLine(d.ToString("d", provider)); //3/27/2015
Console.WriteLine(d.ToString("M", provider)); //March 27
IFormatProvider 主要用于获取一个控制格式化的对象,不做实际格式化操作。
IFormattable 提供了把一个对象的值转化成字符串形式的功能。与Convert类所做的正好相反。
*所有的CultureInfo对象都实现了IFormatProvider接口。
3. 总结
① C#中,string是一种不可变的引用类型。
② 进行大量的字符串操作的时候,推荐使用StringBuilder。
③ String类提供了大量处理字符串的方法:IndexOf, LastIndexOf, StartsWith, EndsWith, SubString.
④ String可以被当做字符集合来遍历。
⑤ 格式化是把其他对象当做字符串来显示的过程。
⑥ 可以给自己的类型添加字符串格式化操作。
第十二章 管理类型(In .net4.5) 之 操作字符串的更多相关文章
- 进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用
进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数 ...
- 第十一章 管理类型(In .net4.5) 之 管理对象的生命周期
1. 概述 本章内容包括 管理非托管资源.使用IDisposable接口 以及 管理析构器和垃圾回收. 2. 主要内容 2.1 理解垃圾回收机制 ① 代码执行的时候,内存中有两个地方存放数据项:堆 和 ...
- 第二十二章 数据访问(In .net4.5) 之 集合
1. 概述 本章内容包括 .net平台中的集合.如何选择集合 以及 如何实现自定义集合. 2. 主要内容 2.1 使用数组(Array) ]; ; x < arrayOfInt.Length; ...
- 第七章 管理类型(In .net4.5) 之 使用类型
1. 概述 本章介绍 值类型的装箱拆箱.类型转换 以及 C#4.0新推出的 dynamic 关键字. 2. 主要内容 2.1 装箱和拆箱 2.2 类型转换 有四种方式可以实现类型转换: ① 隐式转换: ...
- 第六章 管理类型(In .net4.5) 之 创建类型
1. 概述 本章内容包括 C#5中如何更好的创建类型以及如何扩展现有类型. 2. 主要内容 2.1 如何选择类型 C#类型系统包括三种类型:值类型.引用类型.指针类型.(指针类型用于非托管代码,很少使 ...
- 第九章 管理类型(In .net4.5) 之 继承机制
1. 概述 本章包括 设计和实现接口.创建和使用基类 以及 使用.net类库提供的标准接口. 2. 主要内容 2.1 设计和实现接口 一个接口包含公共的方法.属性.事件.索引器.类和结构都可以实现接口 ...
- sql 入门经典(第五版) Ryan Stephens 学习笔记 (第六,七,八,九,十章,十一章,十二章)
第六章: 管理数据库事务 事务 是 由第五章 数据操作语言完成的 DML ,是对数据库锁做的一个操作或者修改. 所有事务都有开始和结束 事务可以被保存和撤销 如果事务在中途失败,事务中的任何部分都不 ...
- perl5 第十二章 Perl5中的引用/指针
第十二章 Perl5中的引用/指针 by flamephoenix 一.引用简介二.使用引用三.使用反斜线(\)操作符四.引用和数组五.多维数组六.子程序的引用 子程序模板七.数组与子程序八.文件句 ...
- 《Django By Example》第十二章 中文 翻译 (个人学习,渣翻)
书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第十二章,全书最后一章,终于到这章 ...
随机推荐
- 带你快速了解CODESOFT 2015
CODESOFT是知名的条码标签设计打印软件,现在又推出了最新版CODESOFT 2015,其新功能.大改进让人为之一振.下面跟随小编的脚步,走进CODESOFT 2015,看一看CODESOFT 2 ...
- 使用Kinect2.0获取点云以在GLUT中显示
这篇文章用来记录Kinect2.0如何生成点云. 以下示例源自Kinect提供的example修改完成,其名称会在小标题下方注解. 首先,要获取点云需要获取图像的深度数据和颜色数据.最后再将深度数据与 ...
- Testing and Checking Refined
还是James大叔的文章:http://www.satisfice.com/blog/archives/856 本文提出了Testing和checking的定义和他们之间的区别. ========== ...
- python(二)拾遗
1.int 系统内部自动执行的 a=123>>>>a=int(123)>>>>a=_init_(123) 外部调用 a 2 b=a.bit_length ...
- 解决visual studio已安装的问题
使用Windows Install Clean Up(用管理员身份打开),找到相应的软件
- SVN中文件属性
从SVN中checkout代码,然后设置crontab 定时执行脚本,发现permission denied 查看发现脚本没有可执行权限 但是,之前项目中的代码是有该权限的,于是猜想应该可以对SVN中 ...
- 【spring 3】AOP:静态代理
一.代理的基本简介 首先,在什么时候使用代理: 在面向方面编程过程中,当需要对所有类进行某种操作(如,安全性检查,记录操作日志)时,考虑到OCP原则,我们不能在所有实现类中直接添加某些相关方法,这样一 ...
- SVN与TortoiseSVN实战:从入门到精通
SVN,版本控制程序,是支撑项目开发的基础工具. 在团队开发中,不管是程序员还是美工.测试等人员,都会用到SVN,通常会把SVN视为源代码管理工具,但对于SVN更准确的理解是: “帮助参与项目人员的管 ...
- poj3020
define n the number of ' * ' define d the number of couple of two points define s ...
- RPC通信(Windows版、Android版)
1.RPC通信模型 2.调用截图 服务器端 PC客户端: Android客户端: 3.remotetea jrpcgen.jar:生成Java源文件 oncrpc.jar:框架通信调用 portmap ...