美文网首页
C# StringBuilder 使用

C# StringBuilder 使用

作者: Ritchie_Li | 来源:发表于2022-08-22 22:12 被阅读0次

在C#中,字符串类型是不可变的。这意味着字符串一旦创建就无法更改。例如,一个新的字符串"HelloWorld!"将占用堆上的内存空间。现在,通过将初始字符串更改"HelloWorld!"为"Hello World! I like C#" 将在内存堆上创建一个新的字符串对象,而不是在相同的内存地址处修改原始字符串。如果通过替换,追加,删除或在原始字符串中插入新字符串多次更改原始字符串,此行为将影响性能。

为了解决此问题,C#StringBuilder在System.Text命名空间中引入。StringBuilder不在内存中创建新对象,而是动态扩展内存以容纳修改后的字符串。

1. 创建一个StringBuilder对象

可以StringBuilder使用new关键字并传递初始字符串来创建该类的对象。

StringBuilder sb = new StringBuilder();

或者

StringBuilder sb = new StringBuilder("Hello World!");

或者,还可以使用重载构造函数指定StringBuilder对象的最大容量

StringBuilder sb = new StringBuilder(100);

StringBuilder sb = new StringBuilder("Hello World!", 100);

以上,C#在内存堆上按顺序分配最多100个空间。一旦达到指定容量,此容量将自动加倍。还可以使用capacity或length属性设置或检索 StringBuilder 对象的容量。您可以循环使用for循环来获取或设置指定索引处的字符。

从上图可以看出,设置容量100,实际长度12,最大容量217483647.

2. 从 StringBuilder 检索字符串

StringBuilder不是字符串。使用ToString()方法从StringBuilder对象检索字符串。

检索的是实际长度的字符串:

for (int i = 0; i < sb.Length; i++)

{

         Console.Write(sb[i]);

}

3. 向StringBuilder 添加/追加字符串

使用 Append () 方法在当前 StringBuilder 对象的末尾追加字符串。如果 StringBuilder 还没有包含任何字符串,它将添加它。AppendLine ()方法在字符串的末尾附加换行符。

sb.Append("C#");

sb.AppendLine("Python");

sb.AppendLine("Java");

Console.WriteLine(sb.ToString());

输出:

Hello World!C#Python

Java

4.将格式化的字符串追加到StringBuilder

使用 AppendFormat() 方法将输入字符串格式化为指定的格式,然后追加它。

StringBuilder sb = new StringBuilder();

 sb.AppendFormat($"总价:{100:C}");

 Console.WriteLine(sb.ToString());

输出: 总价:¥100.00

5. 将 String 插入StringBuilder

使用 Insert() 方法在StringBuilder对象的指定索引处插入一个字符串。

StringBuilder sb= new StringBuilder("Language");

 sb.Append(" List:\n");

Console.WriteLine(sb.Length);

sb.AppendLine("C");

sb.AppendLine("C#");

sb.AppendLine("Java");

sb.Insert(15, "Python\n");

Console.WriteLine(sb.ToString());

输出:

15

Language List:

Python

C

C#

Java

6.在StringBuilder中删除字符串

StringBuilder sb = new StringBuilder("Language");

 sb.Append(" List:\n");

 sb.AppendLine("C#");

 Console.WriteLine(sb.ToString());

 sb.Remove(16, 1);

 Console.WriteLine(sb.ToString());

输出:

Language List:

C#

Language List:

C

7.在StringBuilder中替换字符串

使用该Replace()方法将所有指定的字符串出现替换为指定的替换字符串。

StringBuilder sb = new StringBuilder("Language");

Console.WriteLine(sb.ToString());

sb.Replace("Language", "Program Language");

Console.WriteLine(sb.ToString());

输出:

Language

Program Language

相关文章

  • C# StringBuilder 使用

    在C#中,字符串类型是不可变的。这意味着字符串一旦创建就无法更改。例如,一个新的字符串"HelloWorld!"将...

  • sql学习目录

    sql like N'%...%' 在C#里的写法 sql 循环 随机数创建数据 使用StringBuilder与...

  • c# 调用 C++ dll 传入传出 字符串

    C#调用 非托管C++ dll 传入Stringbuilder、ref string 、 ref char 等都报...

  • C#之StringBuilder

    目的:解决字符串一旦定义以后就不能更改的缺点造成的空间占用大问题 特点:对stringbuilder类型的字符串变...

  • 10月17日C#学习总结

    今天老师讲了C#的变量与常量、String类、定位、StringBuilder类。 声明变量: 变量类型 变量名;...

  • [C#优化] C#字符串连接的效率问题

    C#字符串连接常用的四种方式:StringBuilder、+、string.Format、List 。 1.+的方...

  • 用什么方法操作字符串更高效

    字符串操作 在处理大量字符串连接的时候,尽量使用StringBuilder,在使用StringBuilder时,尽...

  • C#——string与StringBuilder

    本来说好的,有socket的记录的,但是基础知识还没整理完,所以就先不写,等基础知识梳理完毕再进行记录。那么今天就...

  • 字符串拼接

    标签(空格分隔): java StringBuilder——字符串拼接多般是使用StringBuilder类,以及...

  • 拼接字符串+,StringBuilder,StringUtils

    +拼接的时候底层会使用StringBuilder,如果是非循环体和使用StringBuilder相差无几,如果是循...

网友评论

      本文标题:C# StringBuilder 使用

      本文链接:https://www.haomeiwen.com/subject/pscwgrtx.html