c#StringBuilder

StringBuilder概念

c#提供的一个用于处理字符串的公共类

主要解决的问题是

修改字符串而不创建新对象 ,需要频繁修改和拼接的字符串可以使用它,可以提升性能

使用前,需要引用命名空间。using System.Text;

也会产生垃圾,但比string要生成的频率少

cs 复制代码
StringBuilder str = new StringBuilder("123123123");//也有给出容量参数的重载函数
Console.WriteLine(str);

它存在一个容量问题,每次往里增加时,会自动扩容 预先准备好一个空间存放。

获得容量

cs 复制代码
Console.WriteLine(str.Capacity);

获得字符长度

cs 复制代码
Console.WriteLine(str.Length);

增加

cs 复制代码
str.Append("44");//往后面加东西
Console.WriteLine(str.Capacity);
Console.WriteLine(str.Length);
cs 复制代码
str.AppendFormat("{0}{1}",100,333);//拼接增加
//此时超容量了,之前是16容量 就被当作 垃圾了
Console.WriteLine(str.Capacity);
Console.WriteLine(str.Length);

插入

cs 复制代码
str.Insert(0, "shan");
Console.WriteLine(str);

删

cs 复制代码
str.Remove(1,3);
Console.WriteLine(str);

清空

cs 复制代码
 str.Clear();

查

cs 复制代码
Console.WriteLine(str[0]);

替换

cs 复制代码
str.Replace("1","shan");

重新赋值StringBuilder

cs 复制代码
str.Clear();
str.Append("123123");
Console.WriteLine(str);

判断StringBuilder和另一个字符串是否相等

cs 复制代码
if (str.Equals("123123"))
{
    Console.WriteLine("相等");
}

注意:

Append.AddFormat中第一个参数 "{0}{1}" 是 string 类型(格式字符串)。

第二个及之后的参数 100 和 333 是 int 类型(但会被当作 object 处理,因为 AppendFormat 重载的参数是 params object[])。

AppendFormat 内部会:

  1. 解析格式字符串,用提供的参数替换 {0}、{1} 等占位符(调用参数的 ToString() 方法)。

  2. 将生成的最终字符串追加到当前 StringBuilder 中。

所以 AppendFormat 加入的实质是 :经过格式化后的字符串(但它是通过参数动态生成的)。

相关推荐
智鸟科技GemeOpen开发者智能设备1 分钟前
GemeOpen 智能音箱 GSSM0B - 播放控制(Java示例)
java·开发语言·智能音箱
m0_380743871 小时前
PHP 8.3 接口返回数据为空怎么排查
开发语言·php
谢亮_vipxieliang1 小时前
Java 21 新特性实战:Record、Sealed、模式匹配
java·开发语言
霸道流氓气质1 小时前
LLM 应用限流与熔断机制完全指南:从多层防护架构到Java生产级弹性实战
java·开发语言·架构
大侠归来1 小时前
C语言内存管理:从栈到堆的完整指南
c语言·开发语言·python
m0_380743871 小时前
PHP7.0字符串在Docker怎么用
开发语言·php
朝朝辞暮i2 小时前
C++ 第 10 课:函数 Function
开发语言·c++
朝朝辞暮i2 小时前
C++ 第7课 while 循环
开发语言·c++·算法
小朱爱编程1232 小时前
我用 Jev 做了三个实用工具:整理标签页、分诊飞书反馈、找回 GitHub 收藏
java·开发语言·人工智能·后端·python·架构·ai编程
谢亮_vipxieliang3 小时前
Java 8/11/17/21/25 怎么选?一篇讲清 LTS 升级路线
java·开发语言