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) 之 操作字符串的更多相关文章

  1. 进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用

    进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数 ...

  2. 第十一章 管理类型(In .net4.5) 之 管理对象的生命周期

    1. 概述 本章内容包括 管理非托管资源.使用IDisposable接口 以及 管理析构器和垃圾回收. 2. 主要内容 2.1 理解垃圾回收机制 ① 代码执行的时候,内存中有两个地方存放数据项:堆 和 ...

  3. 第二十二章 数据访问(In .net4.5) 之 集合

    1. 概述 本章内容包括 .net平台中的集合.如何选择集合 以及 如何实现自定义集合. 2. 主要内容 2.1 使用数组(Array) ]; ; x < arrayOfInt.Length;  ...

  4. 第七章 管理类型(In .net4.5) 之 使用类型

    1. 概述 本章介绍 值类型的装箱拆箱.类型转换 以及 C#4.0新推出的 dynamic 关键字. 2. 主要内容 2.1 装箱和拆箱 2.2 类型转换 有四种方式可以实现类型转换: ① 隐式转换: ...

  5. 第六章 管理类型(In .net4.5) 之 创建类型

    1. 概述 本章内容包括 C#5中如何更好的创建类型以及如何扩展现有类型. 2. 主要内容 2.1 如何选择类型 C#类型系统包括三种类型:值类型.引用类型.指针类型.(指针类型用于非托管代码,很少使 ...

  6. 第九章 管理类型(In .net4.5) 之 继承机制

    1. 概述 本章包括 设计和实现接口.创建和使用基类 以及 使用.net类库提供的标准接口. 2. 主要内容 2.1 设计和实现接口 一个接口包含公共的方法.属性.事件.索引器.类和结构都可以实现接口 ...

  7. sql 入门经典(第五版) Ryan Stephens 学习笔记 (第六,七,八,九,十章,十一章,十二章)

    第六章: 管理数据库事务 事务 是 由第五章 数据操作语言完成的  DML ,是对数据库锁做的一个操作或者修改. 所有事务都有开始和结束 事务可以被保存和撤销 如果事务在中途失败,事务中的任何部分都不 ...

  8. perl5 第十二章 Perl5中的引用/指针

    第十二章 Perl5中的引用/指针 by flamephoenix 一.引用简介二.使用引用三.使用反斜线(\)操作符四.引用和数组五.多维数组六.子程序的引用  子程序模板七.数组与子程序八.文件句 ...

  9. 《Django By Example》第十二章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第十二章,全书最后一章,终于到这章 ...

随机推荐

  1. 02-自定义CALayer

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  2. 消除PyCharm中满屏的波浪线

    PyCharm使用了较为严格的PEP8的检查规则,如果代码命名不规范,甚至多出的空格都会被波浪线标识出来,导致整个编辑器里铺满了波浪线,右边的滚动条也全是黄色或灰色的标记线,很是影响编辑. 在网上看了 ...

  3. Vertex中实现每顶点光照的镜面高光效果

    1,基础知识讲解 一个物体在自然界会收到三种光的影响,周围的环境光.漫反射和镜面反射.那么对于计算机要想模拟现实中的光照,就应该也会实现这三种基本光照->环境光.漫反射.镜面高光.对于这三种光照 ...

  4. Sublime Text 2/3中Autoprefixer失效解决方法

    ###Sublime Text 2/3中Autoprefixer失效解决方法: 相信每个前端er都会使用Subl这款工具吧,因为它有上千款开源的插件,而且功能各异,这里给大家带来的是标题中Autopr ...

  5. android反编译工具总结

    序:总结反编译主要的目的在于学习.利用反编译进行相关的汉化或修改,都是不道德的! 大家都知道,将apk文件解压后有两部分文件需要处理,一种是xml文件,另一种一个dex文件(.dex),我们可以从.d ...

  6. 阅读jQuery源码的18个惊喜

    注释:本文使用$.fn.method指代调用一系列选中的元素的方法.例如,$.fn.addClass,指代$('div').addClass(‘blue’) 或 $('a.active’).addCl ...

  7. PAT1020. Tree Traversals

    //典型后中省树,这种方法必须有 中序序列来确定根的位置,然后二分建树: //因为用的vc,之前用序列位置建树通不过,用坐标建树通过了,怀疑vc的功能限制,有时间再来测试,眼下感觉还是坐标好啊,用地址 ...

  8. pyrrd 程序

    http://elekslabs.com/2013/12/rrd-and-rrdtool-sar-graphs-using-pyrrd.html http://thepiandi.blogspot.j ...

  9. ERDAS 2013与ArcGIS10.1安装时的兼容性问题

    在Regedit中HKEY_LOCAL_MACHINE->SOFTWARE->FLEXlm License Manager下新建一个“ERDAS License Manager”,然后按照 ...

  10. Android IOS WebRTC 音视频开发总结(六二)-- 大数据解密国外实时通讯行业开发现状

    本文主要介绍国外实时通讯行业现状,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com 上篇文章我们采用百度搜索指数来分 ...