美文网首页
28.C# StringBuilder类

28.C# StringBuilder类

作者: 技术老小子 | 来源:发表于2024-03-03 06:07 被阅读0次

    摘要


    字符串类型是不可变的。这意味着字符串一旦创建就无法更改。为了解决此问题,C# StringBuilder在System.Text命名空间中引入。StringBuilder不在内存中创建新对象,而是动态扩展内存以容纳修改后的字符串。

    正文


    StringBuilder 特点

    • StringBuilder 是可变的。
    • StringBuilder 追加多个字符串值时,执行速度比 string 快。
    • 当您需要追加三个或四个以上的字符串时,请使用StringBuilder。
    • 使用Append()方法向StringBuilder对象添加或追加字符串。
    • 使用ToString()方法从StringBuilder对象中检索字符串

    创建一个StringBuilder对象

    //引用命名空间
    using System.Text;
    
    //稍后将追加字符串
    StringBuilder sb1 = new StringBuilder(); 
    
    //带字符串初使化
    StringBuilder sb2 = new StringBuilder("Hello World!");
    
    //指定初使化容量
    StringBuilder sb3 = new StringBuilder(50);
    //或
    StringBuilder sb4 = new StringBuilder("Hello World!", 50);
    
    

    注:C#在内存堆上按顺序分配最多50个空间。一旦达到指定容量,此容量将自动加倍。还可以使用capacity或length属性设置或检索 StringBuilder 对象的容量。

    遍历一个StringBuilder

    StringBuilder sb = new StringBuilder("Hello World!");
    for (int i = 0; i < sb.Length; i++)
    {
        Console.Write(sb[i]+";");
    }
    
    
    image.png

    StringBuilder 添加/追加字符串

    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < 10000; i++)
    {
        sb.Append(i.ToString());    
    }
    sb.AppendLine("最后一行");
    for (int i = 0; i < sb.Length; i++)
    {
        Console.Write(sb[i]);
    }
    
    
    image.png

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

    StringBuilder sbAmout = new StringBuilder("金额为 ");
    sbAmout.AppendFormat("{0:C} ", 200);
    Console.WriteLine(sbAmout);
    
    
    image.png

    将 String 插入 StringBuilder

    StringBuilder sb = new StringBuilder("Hello World!");
    sb.Insert(5, " C#");
    Console.WriteLine(sb);
    
    
    image.png

    在StringBuilder中删除字符串

    StringBuilder sb = new StringBuilder("Hello World!");
    sb.Remove(6, 6);
    Console.WriteLine(sb);
    
    
    image.png

    在StringBuilder中替换字符串

    StringBuilder sb = new StringBuilder("Hello World!");
    sb.Replace("World", "C#");
    Console.WriteLine(sb);
    
    

    注意:这个与String的Replace的区别大,String的Replace是替换后返回,这个是直接替换。

    相关文章

      网友评论

          本文标题:28.C# StringBuilder类

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