C#使用StringBuilder实现高效处理字符串

 更新时间:2024年01月05日 08:50:12   作者:wenchm  
这篇文章主要为大家详细介绍了C#如何使用StringBuilder实现高效处理字符串,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

一、背景

字符串是不可改变的对象,字符串在创建以后,就不会被改变,当使用字符串对象的Replace、split或Remove等方法操作字符串时,实际上是产生了一个新的字符串对象,原有的字符串如果没有被引用,将会被垃圾收集器回收。如果频繁地使用字符串中的方法对字符串进行操作,会产生大量的没有被引用的字符串对象,这会增加垃圾收集的压力,造成系统资源的浪费。

二、使用StringBuilder便捷、高效地操作字符串

因为使用StringBuilder操作字符串不会产生新的字符串对象,在使用StringBuilder对象前首先要引用命名空间System.Text。

由于字符串的不可变性,使用StringBuilder操作字符串无疑是非常方便和有效的方法。StringBuilder对象的使用方法:

StringBuilder P_stringbuilder = new StringBuilder("abc");  //使用new关键字调用构造方法创建对象
P_stringbuilder.Insert(2,Environment.NewLine);             //调用对象的Insert方法向字符串中插入字符

建立StringBuilder对象后,可以调用操作字符串的方法,从而方便操作字符串对象适当地使用StringBuilder操作字符串,会使程序运行更加高效。

三、实例

1.源码

//按标点符号对字符串分行显示
using System.Text;
 
namespace _039
{
    public partial class Form1 : Form
    {
        private GroupBox? groupBox1;
        private TextBox? textBox3;
        private Button? button1;
        private TextBox? textBox1;
        private TextBox? textBox2;
 
        public Form1()
        {
            InitializeComponent();
            Load += Form1_Load;
        }
        private void Form1_Load(object? sender, EventArgs e)
        {
            // 
            // textBox3
            // 
            textBox3 = new TextBox
            {
                Location = new Point(12, 22),
                Multiline = true,
                Name = "textBox3",
                Size = new Size(310, 46),
                TabIndex = 6,
                Text = "在下面文本框中输入字符串,并使用(,)号分隔,点击分行显示按钮,根据(,)号对字符串进行分行。"
            };
            // 
            // button1
            //      
            button1 = new Button
            {
                Location = new Point(130, 170),
                Name = "button1",
                Size = new Size(75, 23),
                TabIndex = 3,
                Text = "分行显示",
                UseVisualStyleBackColor = true
            };
            button1.Click += Button1_Click;
            // 
            // textBox1
            //            
            textBox1 = new TextBox
            {
                Location = new Point(12, 80),
                Multiline = true,
                Name = "textBox1",
                Size = new Size(310, 84),
                TabIndex = 4
            };
            // 
            // textBox2
            //            
            textBox2 = new TextBox
            {
                Location = new Point(12, 200),
                Multiline = true,
                Name = "textBox2",
                Size = new Size(310, 84),
                TabIndex = 5
            };
            // 
            // groupBox1
            //            
            groupBox1 = new GroupBox
            {
                Location = new Point(0, 0),
                Name = "groupBox1",
                Size = new Size(334, 74),
                TabIndex = 0,
                TabStop = false,
                Text = "操作说明:"
            };
            groupBox1.Controls.Add(textBox3);
            groupBox1.SuspendLayout();
         
            // 
            // Form1
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(334, 296);
            Controls.Add(textBox2);
            Controls.Add(textBox1);
            Controls.Add(button1);
            Controls.Add(groupBox1);
            Name = "Form1";
            StartPosition = FormStartPosition.CenterScreen;
            Text = "按标点符号对字符串分行";
            groupBox1.ResumeLayout(false);
            groupBox1.PerformLayout();
        }
 
        private void Button1_Click(object? sender, EventArgs e)
        {
            StringBuilder stringbuilder = new(textBox1!.Text);      //创建字符串处理对象
            for (int i = 0; i < stringbuilder.Length; i++)
                if (stringbuilder[i] == ',')                       //判断是否出现(,)号
                    stringbuilder.Insert(++i, Environment.NewLine); //向字符串内添加换行符
            textBox2!.Text = stringbuilder.ToString();              //得到分行后的字符串
        }
    }
}

2.生成效果

到此这篇关于C#使用StringBuilder实现高效处理字符串的文章就介绍到这了,更多相关C# StringBuilder处理字符串内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用lambda表达式树优化反射详解

    利用lambda表达式树优化反射详解

    这篇文章主要给大家介绍了关于如何利用lambda表达式树优化反射的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • C#向word文档插入新段落及隐藏段落的方法

    C#向word文档插入新段落及隐藏段落的方法

    这篇文章主要为大家详细介绍了C#如何向word文档插入一个新段落及隐藏段落 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • C#实现扫描局域网内的所有IP和端口

    C#实现扫描局域网内的所有IP和端口

    这篇文章主要为大家详细介绍了如何利用C#实现扫描局域网内的所有IP和端口的功能,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • C#简单读取主机上所有进程的方法

    C#简单读取主机上所有进程的方法

    这篇文章主要介绍了C#简单读取主机上所有进程的方法,涉及C#进程的遍历读取操作相关实现技巧,需要的朋友可以参考下
    2016-08-08
  • C#实现WPF项目复制和移动文件夹

    C#实现WPF项目复制和移动文件夹

    这篇文章介绍了C#实现WPF项目复制和移动文件夹的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 把DLL文件打包进EXE的操作技巧

    把DLL文件打包进EXE的操作技巧

    用VS2005建立一个windows项目,取名test,之后把生成DLL文件打包进EXE,接下来介绍详细的操作技巧,感兴趣的朋友可以了解下啊,或许对你有所帮助
    2013-02-02
  • C#实现chart控件动态曲线绘制

    C#实现chart控件动态曲线绘制

    这篇文章主要为大家详细介绍了C#实现chart控件动态曲线绘制,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • WPF InkCanvas基本操作方法详解

    WPF InkCanvas基本操作方法详解

    这篇文章主要为大家详细介绍了WPF InkCanvas基本的操作方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • C#多线程传递参数及任务用法示例

    C#多线程传递参数及任务用法示例

    这篇文章主要介绍了C#多线程传递参数及任务用法,结合简单实例形式分析了C#多线程的使用及相关的参数传递与任务创建等使用技巧,需要的朋友可以参考下
    2016-06-06
  • C#实现Dev Grid拖拽移动行的方法

    C#实现Dev Grid拖拽移动行的方法

    这篇文章主要介绍了C#实现Dev Grid拖拽移动行的方法,可实现Dev Grid拖拽移动行的效果,非常具有实用价值,需要的朋友可以参考下
    2015-05-05

最新评论