大家都知道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;
}
}
这是我们不想要的结果。而刚好我在做一个模版对象时就需要这种能够快速处理字符串的需求,所以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;
}
}
本文转自Kingthy博客园博客,原文链接:http://www.cnblogs.com/kingthy/archive/2007/09/22/902234.html
,如需转载请自行联系原作者