4.字符串(引用类型)
1)字符串的不变性
当你给一个字符串重新赋值之后,老值并没有被销毁,而是重新开辟一块内存空间存储新值。比如:string person = “张三”;
person = “王五”;给张三在堆上分配的内存空间没有被销毁,重新在堆上给王五分配了一块内存空间,并把地址赋给person。
2)当程序结束后,GC(垃圾回收器)扫面整个内存,如果发现有空间没有被指向,则立即被销毁。
3)可以将string类型看做是char类型的只读数组。
string s = "abcdefg";
s[0] = b;//错误,因为s是只读的。
char []chs = s.ToCharArray();
chs [0] = b;
//将字符数组转换成字符串
s = new string(chs);
//创建一个计时器,记录程序运行的时间
Stopwatch sw = new Stopwatch();
sw.start();//计时开始
sw.Stop();//计时结束
5.字符串的各种方法
1)Length :获得当前字符串中字符的个数或数组中元素的个数。
2)ToUpper():将字符串中的字符转换成大写
3)ToLower():将字符串中的字符转换成小写。
3)Equals(A ,B):可以忽略字符串的大小写,进行比较。
corse1.Equals(corse2); //通过调用这个成员函数实现字符串比较
//忽略大小写实现字符串的比较
corse2.Equals(corse1,StringComparison.OrdinalIgnoreCase);
4).Split(new char [] , StringSplitOptions.RemoveEmptyEnter);将不想要的字符放到new char[]中,实现分割字符,并把空字符移除掉。
5)contain()用于判断是否包含某些字符串
6)replace()将指定字符串替换掉
7)substring(1,2)从第1位开始截取想要的2个字符。
8).indexof()找字符串中字符第一次出现的位置。
9).Lastindexof()找字符中最后一次出现的位置。
10).Trim()同时去掉字符串前面和后面的空格
11).TrimStart()去掉字符串中前面的空格
12).TrimEnd()去掉字符串中后面的空格。
13).IsNullOrEmpty()判断是Null 还是为Empty.
14).Join()将给定的字符添加到数组元素的后面,最后一个不加。
15).StartWith()判断是否以给定的字符串或字符开始。
16).EndWith()判断是否以给定的字符串或字符结束。
6.stringbuilder()用与字符串中大量的赋值或拼接。
注意:详情见代码。
7.//split实现将字符串转换成字符串数组,join实现将字符数组转换成字符串。
//将 sharp c hello 转换成hello c sharp
string strSharp = "sharp c hello";
string [] cShSplit = strSharp.Split(new char []{},StringSplitOptions.RemoveEmptyEntries);
for (int i = 0; i < cShSplit.Length/2; i++)
{
string temp = cShSplit[i];
cShSplit[i] = cShSplit[cShSplit.Length -1-i];
cShSplit[cShSplit.Length - 1 - i] = temp;
}
Console.WriteLine();
//for (int i = 0; i < cShSplit.Length; i++)
//{
// Console.Write(cShSplit[i]);
//}
//strSharp = cShSplit.Join('|' , );
//在数组元素间键入空格,并转换成字符串。
strSharp = string.Join(" " , cShSplit);
Console.WriteLine(strSharp);