<C#高级编程>第8章笔记
对正则表达式依然呈恐惧状态 = = 知道.NET有正则就满足了。。怎么用需要的时候再百度吧。。
第8章 字符串和正则表达式
String
与Java中的String类相似,C#的System.String类也是个不可变的数据类型(常量类)。
修改字符串内容的方法和运算符实际上是创建一个新的字符串。
StringBuilder
为了避免多次修改String带来的性能问题,可以使用System.Text.StringBuilder类。
默认情况下根据初始化的字符串长度来确定,可以指定原始容量。
主要属性
·Length:字符串的实际长度
·Capacity:字符串占据存储单元的长度
·MaxCapacity:该实例最多可以有多少容量,一般是int.MaxValue。也可以自己指定,一旦超出就会抛出异常。
添加子串和替换单个字符的效率大大提高,删除或插入子串仍然效率低下,因为需要移动后面的字符串。
只有执行扩展容量的操作才会给字符串分配需要的新内存,才可能移动整个字符串。
如果容量超出,且容量没有被设置新值,StringBuilder会将自己的容量翻倍。
主要方法
·Append():追加子串。
·AppendFormat():添加特定格式的字符串,会在调用Console.WriteLine()时调用。
·Insert():在当前字符串中插入一个子字符串。
·Remove():从当前字符串中删除字符。
·Replace():替换字符。
·ToString():StringBuilder不能转换为String(不论是隐式转换还是显式转换),只能通过该方法。
字符串的格式化
Console.WriteLine()可以进行格式化输出。此时是调用了String.Format()静态方法。
该方法通过构建StringBuilder对象,依次AppendFormat、Append来构造一个格式化字符串。
若对象需要指出格式化,可以实现IFormattable接口,提供由该接口定义的ToString()重载方法即可。
正则表达式
可以通过Regex.Matches(text, pattern, RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture )的方法来匹配。