[C#] StringBuilder简介及使用方法

C#中,StringBuilder弥补了string在赋值时开辟新空间不足之处。

StringBuilder类型变量会初始化一段长度,供后续对该变量进行增加。当然也可以手动定义其长度

StringBuilder builder = new StringBuilder(10);

其缺点是需要较为精确估算出StringBuilder类型变量的长度,否则若在使用中实际builder长度超出了定义的长度,会自动开辟一段新的StringBuilder空间,并将原先的数据赋值给新的空间,旧的地址就变成了垃圾。

在处理如下案例时,StringBuilder就体现了其比string强大的特性

StringBuilder builder = new StringBuilder(10);
for (int i = 1; i < 10; i++) 
{
    builder.Append(i); // 0123456789
}

整个操作都是在一处内存地址,提高了内存利用率。在Unity实际开发时也有很大的用处

实例方法

单词反转 Hello world => world Hello

private static StringBuilder t3(string str)
{
    string[] str2 = str.Split(' ');
    StringBuilder builder = new StringBuilder(str.Length);
    for (int i = str2.Length - 1; i >= 0; i--)
    {
        builder.Append(str2[i]);
        if (i != 0)
            builder.Append(" ");
    }
    return builder;
}

// 调用
Console.WriteLine(t3("Hello world")); // world Hello

字符串反转 Hello world => dlrow olleH

private static StringBuilder t4(string str)
{
    StringBuilder builder = new StringBuilder(str.Length);
    for (int i = str.Length - 1; i >= 0; i--)
        builder.Append(str[i]);
    return builder;
}

// 调用
Console.WriteLine(t4("Hello world")); // dlrow olleH

字符串查重 Hello world => Helo wrd

private static StringBuilder t5(string str)
{
    StringBuilder builder = new StringBuilder(str.Length);
    builder.Append(str[0]);
    for (int i = 1; i < str.Length; i++)
    {
        for(int j = 0; j < builder.Length; j ++)
        {
            if (str[i] == builder[j]) 
                break;
            if (j == builder.Length - 1) 
                builder.Append(str[i]);
        }
    }
    return builder;
}

// 调用
Console.WriteLine(t5("Hello world")); // Helo wrd

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值