C#学习09---字符串-StringBuilder

下边这个帖子写得很详细很好,请大家参考。

https://www.cnblogs.com/liuqiyun/p/9445022.html

要点如下:

1、尾部添加、中间任意位置插入、删除任意字符

static void Main(string[] args)
        {
            StringBuilder str2 = new StringBuilder(2);//预设2个空间
            str2.Append("111");//串的尾部添加串
            Console.WriteLine(str2);
            Console.WriteLine("串的长度为{0}",str2.Length);
            str2.Append("333");
            Console.WriteLine(str2);
            Console.WriteLine("串的长度为{0}", str2.Length);
            str2.Insert(3, "222");//下标为3的位置插入串
            Console.WriteLine(str2);
            Console.WriteLine("串的长度为{0}", str2.Length);
            str2.Remove(6, 3);//从下标为6处删除3个字符
            Console.WriteLine(str2);
            Console.WriteLine("串的长度为{0}", str2.Length);
            str2.Replace('1', 'x');//把所有的字符1替换成字符x
            Console.WriteLine(str2);
            Console.WriteLine("串的长度为{0}", str2.Length);
            
        }

2、StringBuilder中字符逆转

很遗憾在StringBuilder中并没有逆转成员函数。

我们前面学过Array,其中有成员函数revese。

所有可以先把StringBuild中字符转成字符数组,然后对字符数组进行reverse,然后把reverse后的字符数组再写回StringBuilder。

这样转了一个大圈,效率比较低。

参考代码如下:

            char[] s3;
            s3 = str2.ToString().ToCharArray();//新开辟了一个空间,s3和str2所指不是一个空间
            Array.Reverse<char>(s3);
            str2.Clear();
            str2.Append(s3);
            Console.WriteLine(str2);
            s3[0] = '0';
            Console.WriteLine(s3);
            Console.WriteLine(str2);

对于这个问题,算法比较简单,就是对应字符进行交换,我们可以直接写倒置算法:

            int i, j;
            i = 0;j = str2.Length - 1;
            for(;i<j;i++,j--)
            {
                char c;
                c = str2[i];str2[i] = str2[j];str2[j] = c;
            }
            Console.WriteLine(str2);

3、StringBuilder中字符排序

很遗憾在StringBuilder中并没有sort成员函数。

我们前面学过Array,其中有成员函数sort。

所有可以先把StringBuild中字符转成字符数组,然后对字符数组进行sort,然后把reverse后的字符数组再写回StringBuilder。

这样转了一个大圈,效率比较低。

但由于sort算法比较复杂,我们自己写容易出错,所以尽量还是用系统自带的。

(这就不如C++中的sort函数了,能够对数组、vector等进行排序。是否是因为在C#中隐藏了指针,使得不方便了?

我再查查资料。)

 

static void Main(string[] args)
        {

            StringBuilder str2 = new StringBuilder(2);//预设2个空间           
            char[] s3;            
            str2.Append("456321");
            s3 = str2.ToString().ToCharArray();//新开辟了一个空间,s3和str2所指不是一个空间
            Array.Sort<char>(s3);
            str2.Clear();
            str2.Append(s3);
            Console.WriteLine(str2);            

        }


讨论:从StringBuilder这个名字来看,其作用就是为了Build字符串的,build成功后,转成数组或者string都可以。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值