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 类型(格式字符串)。

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

AppendFormat 内部会:

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

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

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

相关推荐
2501_941875284 小时前
从配置中心到动态管理的互联网工程语法演进与多语言实践分享
开发语言·python
hfywmsj4 小时前
广州餐饮铺位招租决策模型:多因子选址系统设计
开发语言·人工智能·python·广州餐饮铺位招租
努力的lpp6 小时前
php反序列化一(大白话版)
开发语言·web安全·php·ctf·反序列化
菜鸟~noob2337 小时前
【电子战】第03篇:CFAR(恒虚警)处理【含matlab代码】
开发语言·matlab
泡海椒7 小时前
内置SPI函数库详解:JQuick-Java Builtin工具类实战用法
java·开发语言·python
hqyjzsb8 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
曹牧8 小时前
C#:窗体Topmost与获取输入焦点
c#
Keven_118 小时前
算法札记:ACM适用的很骚的C++语法(持续更新)
开发语言·c++
脉动数据行情19 小时前
C# 实现德指 DAX 期货 WebSocket 实时行情监听
开发语言·websocket·c#
码士集团小青9 小时前
C# 手写向量化能追上 C 吗?
c#