• 类似于StringBuilder的字符串加强处理类


    大家都知道StringBuilder的用途,但是StringBuilder提供的功能却实在是太少了.特别是在处理字符串不区分大写时它就不能为力了.只能够将它里面的数据提取出来进行处理然后再放回进去,但这样做的话这里转来转去耗费资源就太多了这是我们不想要的结果。而刚好我在做一个模版对象时就需要这种能够快速处理字符串的需求,所以StringBuilder就不再符合要求只能自己做一个仿照于它并加强部分功能的TextBuilder……

    我们都知道StringBuilder是在内部维护一个字符数组的,所以我们也是从字符数组里下手用于做我们的string缓冲,而在C#里能够快速操作字符数组的也许就需要使用微软不推荐使用的“指针”了(呵呵,别头痛,虽然我也对指针很头痛,但这里用的指针很简单,你可以看成是一个数组的int索引编号值)

    因我的文字表达能力很差,所以我直接提供代码,希望各位能够看懂

    注:以下代码并非真正个人原创,我只是在原作者的基础上修改并加强部分功能(有中文注解的则是本人所加功能
    如果编译以下代码必须将unsafe打开,否则不能编译
    using System;
    using System.IO;
    using System.ComponentModel;
    using System.Runtime.InteropServices;
    namespace Kingthy.Library.Text
    {
        
    /// <summary>
        
    /// TextBuilder : 类似于StringBuilder的字符串处理类
        
    /// </summary>

        public sealed class TextBuilder
        
    {
            
    构造函数

            
    从文件载入数据

            
    添加字符
     
            
    清空字符

            
    从某字符串里拷贝

            
    删除字符

            
    重新设置容量

            
    插入字符

            
    查找字符

            
    判断字符是否相等

            
    从后面查找字符

            
    获取某部分字符

            
    返回字符

            
    替换字符

            
    私有处理函数

            
    属性

            
    // Fields
            private string _cachedString;
            
    private char[] _data;
            
    private int _length;
            
    private int _capacity;
            
    private const int PaddingSize = 0x10;
        }

    }

  • 相关阅读:
    webstorm和git安装后,terminal输入git命令,提示'git' 不是内部或外部命令
    Vue中beforeRouterEnter和beforeRouteLeave的应用
    对象数组,对比多个数组的相同子元素并筛选
    应用canvas绘制动态时钟--每秒自动动态更新时间
    opacity 与rgba区别
    js对象的合并
    小程序wx.navigateTo和wx.redirectTo 都无效
    点赞博客园
    英语学习方法
    JAVA编程思想——分析阅读
  • 原文地址:https://www.cnblogs.com/kingthy/p/902234.html
Copyright © 2020-2023  润新知