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可以被当做字符集合来遍历。
⑤ 格式化是把其他对象当做字符串来显示的过程。
⑥ 可以给自己的类型添加字符串格式化操作。