字符串的特点
- 字符串是引用类型
字符串的数据是存储在堆空间,在栈空间中存储了该数据的引用地址。 - 字符串是不可变的
当你给一个字符串变量重新赋值时,旧值并没有销毁,而是重新开辟一块空间来 存储新值。 - 字符串可以看做是是自读的字符数组
使用字符串变量[下标]的形式可以取字符串中指定的字符。
也可以使用for循环变量数组。
字符串变量.Length;可以取得字符串字符的个数。
常用方法
1.ToUpper()
作用:将字符转换成大写形式,仅对字母有效。返回值是转换后的字符串。
使用:字符串变量.方法名();
例如:name.ToUpper();
2.ToLower()
作用:将字符转换成小写形式,仅对字母有效。返回值是转换后的字符串。
使用:字符串变量.方法名();
例如:name.ToUpper();
3.Equals()
作用:比较两个字符串是否相同。相同返回真,不相同返回假。
使用:字符串变量.方法名(要比较的字符串变量);
例如:name.Equals(name2);
4.Split()
作用:分割字符串。返回字符串类型的数组。
使用:字符串变量.方法名(用于分割的字符数组);
例如:name3.Split(m_char);
5.Substring()
作用:截取字符串。返回截取后的子串。
使用:字符串变量.方法名(开始截取的位置);
字符串变量.方法名(开始截取的位置,截取多长);
name.Substring(2); //从角标为2的位置,截取到最后;
name.Substring(2,2); //从角标为2的位置,截取2个字符;
6.IndexOf()
作用:查找某个字符串在字符串中第一次出现的位置。
返回所在的索引位置值。如果没有找到,返回-1。
使用:字符串变量.方法名(子字符串);
例如:name.IndexOf(“on”);
7.LastIndexOf()
作用:查找某个字符串在字符串中最后一次出现的位置。
返回所在的索引位置值。如果没有找到,返回-1。
使用:字符串变量.方法名(子字符串);
例如:name.IndexOf(“on”);
8.StartsWith()
作用:判断是否以…字符串开始。如果是,返回真;如果不是,返回假。
使用:字符串变量.方法名(子字符串);
例如:name.StartsWith(“Mo”);
9.EndsWith()
作用:判断是否以…字符串结束。如果是,返回真;如果不是,返回假。
使用:字符串变量.方法名(子字符串);
例如:name.EndsWith(“key”);
10.Replace()
作用:将字符串中的某个字符串替换成一个新的字符串。返回新的字符串。
使用:字符串变量.方法名(旧字符串,新字符串);
例如:name.Replace(“Mon”,“CODE”);
11.Contains()
作用:判断某个字符串中是否包含指定的字符串。如果包含返回真,否则返回假。
使用:字符串变量.方法名(子字符串);
例如:name.Contains(“key”);
12.Trim()
作用:去掉字符串中前后空格。返回处理后的字符串。
使用:字符串变量.方法名();
例如:address.Trim();
13.TrimEnd()
作用:去掉字符串结束后的空格。返回处理后的字符串。
使用:字符串变量.方法名();
例如:address.TrimEnd();
14.TrimStart()
作用:去掉字符串开始前的空格。返回处理后的字符串。
使用:字符串变量.方法名();
例如:address.TrimStart();
15.IsNullOrEmpty()
作用:判断一个字符串是否为Null或者空。 如果为null或者空,返回真;否则返回假。
- null是不占内存空间的,而空字符串(“”)是占内存空间的。
使用:string.方法名(字符串变量);
例如:string.IsNullOrEmpty(name);
StringBuilder类
·StringBuilder简介
-
字符串的缺点
当需要对一个字符串变量重复赋值时,在内存中会产生大量的垃圾数据信息。当重复赋值的频率很高时,执行的效率就会降低。 -
StringBuilder简介
StringBuilder是一个类。SB类型的变量是引用类型。 StringBuilder类型的“字符串变量”,一直操作同一块内存空间,不会产生 垃圾数据,且执行效率远远高于string类型的字符串变量。
·StringBuilder使用方法
StringBuilder sb = new StringBuilder(); //创建一个对象。
// 注意:StringBuilder依赖System.Text命名空间。
sb.Append(i); //追加数据。
sb.ToString(); //将sb转成字符串形式。
sb.Clear(); //将sb清空。
·StringBuilder效率测试
Stopwatch类
Stopwatch,秒表计时器,用来记录程序运行的时间。
Stopwatch sw = new Stopwatch();
// 注意:Stopwatch依赖System.Diagnostics命名空间
sw.Start(); //计时器开始。
sw.Stop(); //计时器结束。
sw.Elapsed; //开始到结束之间的时长。
效率测试
使用for循环分别往string和StringBuilder中追加9万个信息,统计时长。
string names = "";
for (int i = 0; i <= 90000; i++){
names += i;
}
sw.Stop();
Console.WriteLine(sw.Elapsed); //10.10秒 9万条数据追加.
StringBuilder sb = new StringBuilder();
for (int i = 0; i <= 90000; i++){
sb.Append(i);
}
sw.Stop();
Console.WriteLine(sw.Elapsed); //0.013秒 9万条数据追加.