前言
C# 中的字符串类型是不可变的,因此在其创建后就无法更改其内容。如果我们在创建字符串类型对象后尝试修改该对象将导致在内存中创建该对象的新实例。此外,如果字符串频繁更改,可能会出现性能问题。对于需要修改字符串,可以使用 StringBuilder 来解决,因为与字符串不同,它能够动态扩展内存以适应任何操作。本文将介绍它的用法。
StringBuilder
1、实例:
StringBuilder 实例化相当简单。使用 new 关键字创建类的对象,就可以实例化。根据需求选择对应的构造函数。// 创建的是空白可变字符串对象,不包含任何内容
StringBuilder stringBuilderEmpty = new StringBuilder();
// 根据字符串的内容,来创建可变字符串对象
StringBuilder stringBuilder = new StringBuilder("Hello, ");
2、转换:
使用 StringBuilder 不会直接返回字符串,需要我们使用ToString()方法来转换为字符串。// 创建可变字符串对象
StringBuilder stringBuilder = new StringBuilder("李明,您好!");
// 输出
Console.WriteLine(stringBuilder.ToString());
3、追加:
使用Append 方法,将新字符串追加到现有 StringBuilder 的末尾。其长度和空间自动增加。// 创建可变字符串对象
StringBuilder stringBuilderTime = new StringBuilder("现在的时间是:");
// 追加字符
stringBuilderTime.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
// 转换为字符串
string dateTimeNow = stringBuilderTime.ToString();
// 输出 dateTimeNow - 现在的时间是:2024-06-15 17:56:36
Console.WriteLine("{0} - {1}", nameof(dateTimeNow), dateTimeNow);
3.1、追加终止符:
使用 AppendLine 方法可以方便地在 StringBuilder 的末尾追终止符。// 创建可变字符串对象
StringBuilder stringBuilderTime = new StringBuilder("现在的时间是:");
// 追加字符
stringBuilderTime.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
// 追加终止符
stringBuilderTime.AppendLine();
// 追加字符
stringBuilderTime.Append("今天是星期: ");
stringBuilderTime.Append(DateTime.Now.DayOfWeek);
// 转换为字符串
string dateTimeNow = stringBuilderTime.ToString();
// 现在的时间是:2024-06-15 18:13:19
// 今天是星期: Saturday
Console.WriteLine(dateTimeNow);
3.2、追加格式:
AppendFormat 方法允许我们将字符串所需的格式作为输入传递。// 创建可变字符串对象
StringBuilder stringBuilderTime = new StringBuilder("现在的时间是:");
// 加终止符
stringBuilderTime.Append(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
// 加终止符
stringBuilderTime.AppendLine();
// 使用格式化追加
stringBuilderTime.AppendFormat("今天是星期: {0}", DateTime.Now.DayOfWeek);
// 转换为字符串
string dateTimeNow = stringBuilderTime.ToString();
// 现在的时间是:2024-06-15 18:13:19
// 今天是星期: Saturday
Console.WriteLine(dateTimeNow);
4、插入:
Insert 方法将指定对象的字符串插入到 StringBuilder 实例中的指定字符位置。// 定义变量
string name = "李明,";
// 创建可变字符串对象
StringBuilder stringBuilder= new StringBuilder("您好!");
// 在 StringBuilder 实例的0位置开始插入变量的值
stringBuilder.Insert(0, name);
// 输出 李明,您好!
Console.WriteLine(stringBuilder.ToString());
5、替换:
Replace 方法将 StringBuilder实例中出现的所有指定字符或字符串替换为其他的指定字符或字符串。// 创建可变字符串对象
StringBuilder stringBuilder = new StringBuilder("李明,您好!");
// 替换
stringBuilder.Replace("李明", "赵小山");
// 输出 赵小山,您好!
Console.WriteLine(stringBuilder.ToString())
6、移除:
Remove 方法从 StringBuilder 中删除预定数量的字符。开始索引和要删除的字符数是输入参数。// 创建可变字符串对象
StringBuilder stringBuilder = new StringBuilder("李明,您好!");
// 从 StringBuilder 第3个字符开始移除3个字符
stringBuilder.Remove(3,3);
// 输出
Console.WriteLine(stringBuilder.ToString());
7、清除:
Clear 方法用于删除 StringBuilder 对象的所有字符。string name = "李明,";
// 创建可变字符串对象
StringBuilder stringBuilder= new StringBuilder("您好!");
// 在 StringBuilder 实例的0位置开始插入变量的值
stringBuilder.Insert(0, name);
// 删除所有字符
stringBuilder.Clear();
区别
字符集合可以使用字符串和 StringBuilder 进行保存或存储。C# 的 string 与 StringBuilder 之间存在一些差异。1、string 创建后不可改变,如改变则为新实例;StringBuilder 创建后可改变。2、在处理大字符串字符串时,StringBuilder 优于 string。否则可以忽略不计。3、命名空间不同,StringBuilder 在 System.Text;string 在 System.String。
小结
以上是 StringBuilder 的用法全部内容及与 String 的区别,希望对大家了字符的处理带来一些帮助。
该文章在 2024/7/24 23:06:12 编辑过