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

相关推荐
charlie1145141912 小时前
现代Qt开发——0.1——如何在IDE中配置Qt环境?
开发语言·c++·ide·qt·嵌入式
五阿哥永琪2 小时前
record只读类
java·开发语言
枫叶丹42 小时前
【HarmonyOS 6.0】窗口能力增强:PC/2in1与自由多窗模式的深度解析
开发语言·华为·harmonyos
AI科技星2 小时前
基于三维空间合速度恒为光速公理的统一动力学与热力学理论:温度本质的第一性原理诠释与物质全物态实验验证
开发语言·线性代数·机器学习·计算机视觉·数学建模
Dovis(誓平步青云)2 小时前
《QT学习第二篇:QT的常用控件属性与按钮、view系列、Label、输入框》
开发语言·qt·学习
胖咕噜的稞达鸭2 小时前
C/C++动态内存管理,malloc,calloc,realloc的区别,动态内存中的错误汇总
c语言·开发语言·c++
charlie1145141912 小时前
嵌入式C++教程实战之Linux下的单片机编程(6):从点亮第一盏LED开始 —— 我们为什么要用现代C++写STM32
linux·c语言·开发语言·c++·stm32·单片机
沐知全栈开发2 小时前
Ruby 哈希(Hash)
开发语言
徒 花2 小时前
Python知识学习03
开发语言·python·学习