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可以被当做字符集合来遍历。

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

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

最新文章

  1. Linux C++ 开发简介
  2. javamail实践
  3. php 伪静态 (url rewrite mod_rewrite 重写)
  4. c创建win窗口
  5. SPRING IN ACTION 第4版笔记-第四章ASPECT-ORIENTED SPRING-009-带参数的ADVICE2
  6. jquery easy ui 学习 (5) windowlayout
  7. 转自http://blog.sina.com.cn/daylive——C++ STL set&amp;multiset
  8. Android项目实战(三十九):Android集成Unity3D项目(图文详解)
  9. 如何在shell脚本中判断文件或者文件夹是否存在?
  10. java中二维数组内存分配
  11. Go基础系列:构建go程序
  12. (贪心部分背包问题)Saving HDU HDU2111
  13. REST API 调用 方法
  14. Web服务器的反向代理nginx
  15. Zabbix实战-简易教程--DB类--ClickHouse
  16. SQLServer语言之DDL,DML,DCL,TCL
  17. CSS 分类 选择器
  18. SWIFT Scan QRCode
  19. linux远程
  20. Kafka server部署配置优化

热门文章

  1. ASP.Net软件工程师基础(二)
  2. 如果出现isapi和CGI限制的时候
  3. 《Code Complete》ch.20 软件质量概述
  4. IEnumerable和List有什么区别?
  5. 【LeetCode】14. Longest Common Prefix 最长前缀子串
  6. 慕课网-安卓工程师初养成-2-9 Java中的自动类型转换
  7. oracle 大字段clob检索
  8. 常见行为:仿真&amp;重力&amp;碰撞&amp;捕捉
  9. #define的一些
  10. Mysql-5.7.10启动失败 。