第十二章 管理类型(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 = 0; i < 10000; 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(2015, 3, 27);
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可以被当做字符集合来遍历。

  ⑤ 格式化是把其他对象当做字符串来显示的过程。

  ⑥ 可以给自己的类型添加字符串格式化操作。

 

posted @ 2015-03-27 17:03  stone lv  阅读(260)  评论(0编辑  收藏  举报