(一)System.String类
System.String是一个类,专门用于存储字符串,允许对字符串进行许多操作。C#提供了关键字string和相关的语法,以便使用这个类更轻松。
例子:
使用运算符重载可以连接字符串:
string message1 = "hello"; message1 += " world"; Console.WriteLine(message1);
运行以上代码,结果如下:
例子:
C#还允许使用类似于索引器的语法来提取字符:
string message1 = "hello"; char char1 = message1[0]; Console.WriteLine(char1);
运行以上代码,结果如下:
System.String类的还有许多其它方法。
1、创建字符串
String类存在一个问题:重复修改给定的字符串,效率会很低,它实际上是一个不可变的数据类型,一旦对字符串对象进行了初始化,该字符串对象就不能改变了。
例子:
string message1 = "hello"; message1 = "hello world";
表面上message1修改了字符串的内容,实际上是创建了一个新的字符串hello world然后将其指向meesage1,原来的hello字符串就没有变量引用它,下一次垃圾收集器清理时就会删除它。
2、StringBuilder成员
实例化StringBuilder时有很多重载可以选择,其中就有提供一个字符串和给定容量。
例子:
StringBuilder strb1 = new StringBuilder("hello"); StringBuilder strb2 = new StringBuilder(100);
还可以随时显示地设置容量,当字符串长度超出时,就会抛出异常:
StringBuilder strb = new StringBuilder("1个字符"); strb.Capacity = 1;
运行以上代码,结果如下:
StringBuilder类上可以进行的处理仅限于替换和追加或删除字符串中的文本。StringBuilder转换为string的唯一方法就是使用ToString()方法。StringBuilder类基本上应在处理多个字符串时使用。
3、格式字符串
例子:
Console.WriteLine("张三有存款:{0,10:C}",1000); Console.WriteLine("李四有存款:{0,10:C}", 800); Console.WriteLine("赵六有存款:{0,10:C}", 20000);
运行以上代码,结果如下:
解释一下{0,10:C}的作用,其中{0}是占位符,逗号后的数字是表示该项字符串要占用的字符宽度,冒号后面的字母是格式说明符。在使用格式说明符时,会检查占位符替换内容的类型是否实现IFormattable接口,如果没有则调用对象的ToString()方法。
例子:
在自定义类中实现IFormattable
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Person p = new Person(); 6 p.FirstName = "zhang"; 7 p.SecondName = "san"; 8 Console.WriteLine("无格式说明符:{0}", p); 9 Console.WriteLine("格式说明符C:{0:C}", p); 10 Console.WriteLine("格式说明符A:{0:A}", p); 11 } 12 13 } 14 public class Person : IFormattable 15 { 16 public string FirstName { get; set; } 17 public string SecondName { get; set; } 18 public string ToString(string format, IFormatProvider formatProvider) 19 { 20 //当没有传入格式说明符时,直接调用ToString() 21 if (format == null) 22 { 23 return ToString(); 24 } 25 //C表示返回中国格式名字 A表示返回美国格式名字 26 switch (format.ToUpper()) 27 { 28 case "C": 29 return FirstName + SecondName; 30 case "A": 31 return SecondName + FirstName; 32 default: 33 return ToString(); 34 } 35 } 36 }
运行以上代码,结果如下:
(二)正则表达式
.NET正则表达式引擎用于兼容Perl 5 的正则表达式。
1、正则表达式概述
正则表达式是一种专门用于字符串处理的语言。
2、.NET正则表达式的使用
例子:
MatchCollection match = Regex.Matches("happy hapy hay", "ha.+?y"); foreach (Match item in match) { Console.WriteLine("{0}位置,匹配到{1}", item.Index, item.Value); } Console.ReadKey();
运行以上代码,结果如下:
关于正则表达式的内容另行了解,.NET中主要是Regex相关的类。