一、string 常用补充方法
1. Contains()
判断字符串是否包含指定内容,返回 true/false。
cs
string s = "杀杀杀";
Console.WriteLine(s.Contains("杀1")); // false
2. Insert()
在指定索引位置插入字符串。
cs
string ss = s.Insert(0, "都是");
Console.WriteLine(ss); // 都是杀杀杀
3. LastIndexOf()
从后往前查找字符索引。
cs
Console.WriteLine(s.LastIndexOf("杀")); // 2
Console.WriteLine(s.IndexOf("杀")); // 0
4. Remove()
从指定位置开始,移除指定数量的字符。
cs
Console.WriteLine(s.Remove(0, 1)); // 杀杀
5. ToCharArray()
将字符串转为字符数组,可使用 foreach 遍历。
cs
char[] cs = s.ToCharArray();
foreach (var item in cs)
{
Console.WriteLine(item + "------");
}
二、string 与 StringBuilder 核心原理
- string 是不可变字符串,一旦创建就不能修改,底层是 char [ ]
- StringBuilder 是可变字符串,可以增删改,自动扩容,不会频繁创建新对象。
三、Stopwatch 性能测试
作用:检测代码执行效率、耗时。
cs
Stopwatch stopwatch = new Stopwatch(); // 检测效率的对象
stopwatch.Start(); // 开始计时
string msg = "";
for (int i = 0; i < 50000; i++)
{
msg += i;
}
stopwatch.Stop(); // 停止计时
Console.WriteLine($"{stopwatch.Elapsed.Minutes}:{stopwatch.Elapsed.Seconds}:{stopwatch.Elapsed.Milliseconds}");
StringBuilder 性能测试
cs
Stopwatch stopwatch1 = new Stopwatch();
stopwatch1.Start();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 50000; i++)
{
sb.Append(i);
}
stopwatch1.Stop();
Console.WriteLine($"{stopwatch1.Elapsed.Minutes}:{stopwatch1.Elapsed.Seconds}:{stopwatch1.Elapsed.Milliseconds}");
string 拼接极慢 StringBuilder 拼接极快
四、StringBuilder 常用方法
cs
StringBuilder sb = new StringBuilder();
1. Append / AppendLine
追加内容(AppendLine 自动换行)
cs
sb.AppendLine("苏有朋");
sb.Append("罗志祥");
2. Insert
指定位置插入
cs
sb.Insert(0, "tea");
3. Remove
删除指定范围
cs
sb.Remove(0, 3);
4. Clear
清空内容
cs
sb.Clear();
5. Replace
替换内容
cs
sb.Replace("罗志祥", "***");
五、StringBuilder 两个重要属性
cs
sb.Length; // 实际字符串长度
sb.Capacity; // 分配的内存容量(默认 16)
示例:
cs
StringBuilder sb2 = new StringBuilder();
sb2.Append("1");
sb2.Append("2");
Console.WriteLine(sb2.Length); // 2
Console.WriteLine(sb2.Capacity); // 16