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 加入的实质是 :经过格式化后的字符串(但它是通过参数动态生成的)。

相关推荐
H.莓飛2 小时前
【数据结构】排序_OJ题(一):计数、桶与排序后的处理
java·开发语言·数据结构
wangchunyu1142 小时前
JAVA AQS与Lock实现原理(含CAS)
java·开发语言·word
爱喝水的鱼丶3 小时前
SAP-ABAP:ECC→S/4HANA ABAP 迁移升级指南——程序改造、语法兼容与性能优化 导语
运维·开发语言·性能优化·sap·abap·经验交流·开发交流
小灰灰搞电子4 小时前
Rust+Slint 实现FTP客户端调试助手源码分享
开发语言·后端·rust
外收内放4 小时前
面向对象高级(实战案例)
开发语言·python·学习
zimoyin4 小时前
在 C# 里嵌入 JavaScript:用 Jint 做可热更新的自动化脚本(从入门到踩坑)
javascript·c#·自动化
fanruitian5 小时前
python else用法
开发语言·python
FRing035 小时前
JavaScript入门到精通二十六(变量提升、函数剩余参数、展开运算符、ES6箭头函数)
开发语言·前端·javascript·es6·箭头函数
云深麋鹿5 小时前
C++ | 基于红黑树实现mymap与myset
开发语言·c++
weixin_417396836 小时前
桌面云终端PXE启动失败怎么排查?从DHCP Option到镜像下发
开发语言·前端·php·技术·酒店·综合布线·弱电