当前位置: 首页 > news >正文

c# —— StringBuilder 类

StringBuilder 类是 C# 和其他一些基于 .NET Framework 的编程语言中的一个类,它位于 System.Text 命名空间下。StringBuilder 类表示一个可变的字符序列,它是为了提供一种比直接使用字符串连接操作更加高效的方式来构建或修改字符串。

与 C# 中的 string 类型不同,string 是不可变的,这意味着每次对字符串进行修改(如拼接、替换字符等)时,都会创建一个新的字符串对象。这种不可变性在处理大量字符串操作时可能会导致性能问题,因为每次修改都会涉及内存分配和可能的垃圾回收。

StringBuilder 类通过提供一个可变的字符序列来解决这个问题。你可以使用 StringBuilder 类的方法来高效地添加、插入、删除或替换字符,而不需要创建新的字符串对象。这使得 StringBuilder 类在处理大量字符串拼接或修改操作时比直接使用 string 类型更加高效。

StringBuilder 类的主要方法和属性包括:

Append:在当前 StringBuilder 对象的末尾追加指定的字符串或字符。
Insert:在指定位置插入一个字符串或字符。
Remove:移除指定范围内的字符。
Replace:替换指定子字符串的第一次出现。
Length:获取或设置 StringBuilder 对象中字符的总数。
Capacity:获取或设置可以包含在 StringBuilder 中的最大字符数。
ToString:将此实例的当前值转换为一个不可变的 string 对象。
使用 StringBuilder 类时,你可以通过指定初始容量来优化性能。如果知道将要构建的字符串的大致大小,设置合适的容量可以减少内存分配的次数,从而提高性能。然而,需要注意的是,如果设置的容量小于实际需要,StringBuilder 会自动增加容量以适应更多字符,这可能会导致额外的内存分配。如果设置的容量远大于实际需要,则会浪费内存。

总之,StringBuilder 类是处理大量字符串拼接或修改操作时的首选工具,因为它提供了比直接使用 string 类型更加高效的方法。

例子1:循环内字符串连接

在循环中拼接字符串时,使用 StringBuilder 可以避免创建大量临时字符串,从而提高性能。

StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i < 10000; i++)
{stringBuilder.Append("Item");stringBuilder.Append(i);
}
string result = stringBuilder.ToString();

在这个例子中,我们创建了一个 StringBuilder 对象,并在循环中使用 Append 方法将字符串拼接起来。最后,使用 ToString 方法将 StringBuilder 对象转换为不可变的 string 对象。 

例子2:构建大型日志消息

当需要构建大型日志消息时,可以使用 StringBuilder 来高效地拼接字符串。

StringBuilder logBuilder = new StringBuilder();
foreach (var dataItem in data)
{logBuilder.Append(dataItem.ToString());logBuilder.Append(",");
}
string logMessage = logBuilder.ToString().TrimEnd(',');

在这个例子中,我们遍历一个数据集合,并使用 Append 方法将每个数据项转换为字符串并拼接到 StringBuilder 对象中。最后,使用 ToString 方法将 StringBuilder 对象转换为字符串,并使用 TrimEnd 方法去除末尾的逗号。

例子3:格式化长字符串

StringBuilder 还支持格式化字符串,可以使用 AppendFormat 方法将格式化的字符串追加到 StringBuilder 对象中。

StringBuilder reportBuilder = new StringBuilder();
foreach (var item in reportData)
{reportBuilder.AppendFormat("ID: {0}, Name: {1}, Value: {2}\n", item.Id, item.Name, item.Value);
}
string report = reportBuilder.ToString();

在这个例子中,我们遍历一个报告数据集合,并使用 AppendFormat 方法将每个数据项的 ID、名称和值格式化为字符串并追加到 StringBuilder 对象中。最后,使用 ToString 方法将 StringBuilder 对象转换为字符串。

例子4:SQL 查询构造

在构建 SQL 查询时,可以使用 StringBuilder 来动态地拼接查询条件。

StringBuilder sqlQuery = new StringBuilder("SELECT * FROM Users WHERE ");
bool isFirst = true;
foreach (var condition in conditions)
{if (!isFirst){sqlQuery.Append(" AND ");}sqlQuery.Append($"Column = '{condition}'");isFirst = false;
}
ExecuteSql(sqlQuery.ToString());

在这个例子中,我们使用 StringBuilder 来构建 SQL 查询语句,并根据条件集合动态地拼接查询条件。最后,使用 ToString 方法将 StringBuilder 对象转换为 SQL 查询字符串,并传递给 ExecuteSql 方法执行。

例子5:处理用户输入流

当需要处理用户输入流时,可以使用 StringBuilder 来高效地拼接输入字符。

StringBuilder inputBuffer = new StringBuilder();
while (streamReader.Peek() >= 0)
{inputBuffer.Append((char)streamReader.Read());
}
ProcessInput(inputBuffer.ToString());

在这个例子中,我们使用 StringBuilder 来拼接用户输入流中的字符。在循环中,我们使用 Append 方法将读取的字符追加到 StringBuilder 对象中。最后,使用 ToString 方法将 StringBuilder 对象转换为字符串,并传递给 ProcessInput 方法处理。

这些例子展示了 StringBuilder 在不同场景下的应用,通过使用 StringBuilder,我们可以更加高效地处理字符串拼接和修改操作。

http://www.lryc.cn/news/542371.html

相关文章:

  • Linux 核心架构与组件(2025更新中)
  • Unity打包APK报错 using a newer Android Gradle plugin to use compileSdk = 35
  • 陀螺匠·企业助手v1.8 产品介绍
  • 文件包含-session2
  • GitHub免密操作与跨服务器通行:SSH密钥一站式配置指南
  • PHP入门基础学习四(PHP基本语法)
  • 模型蒸馏:让人工智能更智能、更小、更高效的艺术
  • git 小乌龟安装包及中文包
  • MySQL 主从集群同步延迟问题分析与解决方案
  • 用HTML5+CSS+JavaScript实现新奇挂钟动画
  • 医疗AI领域中GPU集群训练的关键技术与实践经验探究(下)
  • 解决双系统开机显示gnu grub version 2.06 Minimal BASH Like Line Editing is Supported
  • sysbench压测pgsql数据库 —— 筑梦之路
  • 数字IC后端培训教程| 芯片后端实战项目中base layer drc violation解析
  • Android之APP更新(通过接口更新)
  • 什么是 OCP 数据库专家
  • 基于AT89C51单片机的教室智能照明控制系统
  • DIP的实际举例
  • DeepSeek引领目标检测新趋势:如何通过知识蒸馏优化模型性能
  • vue2.x 中父组件通过props向子组件传递数据详细解读
  • 安装PHPStudy 并搭建DVWA靶场
  • RoCBert:具有多模态对比预训练的健壮中文BERT
  • 【C】堆的应用1 -- 堆排序
  • BGP配置华为——路径优选验证
  • 【原创】Windows11安装WSL“无法解析服务器的名称或地址”问题解决方法
  • 【CS285】高斯策略对数概率公式的学习笔记
  • R与RStudio简介及安装
  • TTL和CMOS的区别【数电速通】
  • Linux红帽:RHCSA认证知识讲解(二)配置网络与登录本地远程Linux主机
  • Threejs教程一【三要素】