ITPub博客

首页 > 应用开发 > IT综合 > 增强字符串 (转)

增强字符串 (转)

原创 IT综合 作者:amyz 时间:2007-08-16 19:59:19 0 删除 编辑
增强字符串 (转)[@more@]

一个自定义类,用于大规模的字符串连接,如拼接sql语句。用流技术实现的,很好呦!!

using System;
using System.IO;
using System.Text;
using System.windows.Forms;

namespace SuperString
{
 ///


 /// 创 建 者: superhood
 /// 内容描述: 增强字符串类
 ///

 public class CSuperString
 {
 ///
 /// 功能简述: 运算符重载
 ///

 /// 左参数
 /// 右参数
 /// 文本类
 public static CSuperString operator + (string Left,CSuperString Right)
 {
 byte[] btyLeft = Encoding.Default.GetBytes(Left);//返回左参数数组
 byte[] btyRight = new Byte[Right.iLength];//返回右参数数组
 
 Right.iTextLength += Left.Length;//设置右参数文本长度
 Right.iLength = btyLeft.Length + btyRight.Length;//设置右参数字节长度
 
 Right.memStrm.Position = 0;//将右参数流位置置0
 Right.memStrm.Read(btyRight,0,btyRight.Length);//将右参数数据读出

 Right.memStrm.Position = 0;//将右参数流位置置0
 Right.memStrm.Write(btyLeft,0,btyLeft.Length);//将字符串(字节数组)写入右参数
 Right.memStrm.Write(btyRight,0,btyRight.Length);//将右参数原有信息写回(加在左参数字符串后)

 return Right;//返回右参数
 }

 ///


 /// 功能简述: 运算符重载
 ///

 /// 左参数
 /// 右参数
 /// 文本类
 public static CSuperString operator + (CSuperString Left,string Right)
 {
 byte[] btyRight = Encoding.Default.GetBytes(Right);//将右参数(字符串)转换为字节数组
 
 Left.memStrm.Position = Left.iLength;//设置左参数流的位置
 Left.memStrm.Write(btyRight,0,btyRight.Length);//将右参数字符串写入流

 Left.iTextLength += Right.Length;//设置左参数文本长度
 Left.iLength += btyRight.Length;//设置左参数字节长度

 return Left;//返回左参数
 }
 
 ///


 /// 功能简述: 运算符重载
 ///

 /// 左参数
 /// 右参数
 /// 文本类
 public static CSuperString operator + (CSuperString Left,CSuperString Right)
 {
 byte[] btyRight = new Byte[Right.iLength];//声明字节数组(右参数)
 
 Right.memStrm.Position = 0;//将右参数流位置置0
 Right.memStrm.Read(btyRight,0,btyRight.Length);//将右参数(字符串)转换为字节数组
 
 Left.memStrm.Position = 0;//将左参数流位置置0
 Left.memStrm.Write(btyRight,0,btyRight.Length);//将右参数字符串写入流
 
 Left.iTextLength += Right.iTextLength;//设置左参数文本长度
 Left.iLength += Right.iLength;//设置左参数字节长度

 return Left;//返回左参数
 }

 ///


 /// 功能简述: 流中有效字节长度
 ///

 private int iLength = 0;
 
 ///
 /// 功能简述: 流中文本长度
 ///

 private int iTextLength = 0;

 ///


 /// 功能简述: 内存流
 ///

 private MemoryStream memStrm;

 ///


 /// 功能简述: 构造函数
 ///

 public CSuperString()
 {
  memStRM = new MemoryStream();//初始化流
 }

 ///


 /// 功能简述: 构造函数
 ///

 /// 默认长度(以字节为单位)
 public CSuperString(int DefaultLength)
 {
 memStrm = new MemoryStream(DefaultLength);//初始化流
 }

 ///


 /// 功能简述: 属性,字节长度
 ///

 public int Length
 {
 get
 {
 return iLength;
 }
 }

 ///


 /// 功能简述: 属性,文本长度
 ///

 public int TextLength
 {
 get
 {
 return iTextLength;
 }
 }

 ///


 /// 功能简述: 属性,流长度
 ///

 public int Capacity
 {
 get
 {
 return memStrm.Capacity;
 }
 set
 {
 if (value >= iLength)
 memStrm.Capacity = value;
 else
 memStrm.Capacity = iLength;
 }
 }

 ///


 /// 功能简述: 向类中添加字符串
 ///

 ///
 public void AddString (string Date)
 {
 byte[] btyDate = Encoding.Default.GetBytes(Date);//字符串转换为字节数组
 
 memStrm.Position = iLength;//设置流的位置
 memStrm.Write(btyDate,0,btyDate.Length);//将字符串写入流

 iTextLength += Date.Length;//设置文本长度
 iLength += btyDate.Length;//设置字节长度
 }

 ///


 /// 功能简述: 返回文本
 ///

 /// 返回字符串
 public override string ToString()
 {
 memStrm.Position = 0;//设置流的位置
 byte[] btyDate = new byte[iLength];//声明字节数组
 memStrm.Read(btyDate,0,iLength);//将流内容读入数组
 return Encoding.Default.GetString(btyDate);//将字节数组转换为字符串并返回
 }

 ///


 /// 功能简述: 将字符串写入文件
 ///

 /// 文件名
 public void WriteToFile(string FileName)
 {
 FileStream strm = new FileStream(FileName,FileMode.OpenOrCreate,FileAccess.Write);//初始化文件流
 
 //判断流长度用来确定流中是否有冗余信息
 if (memStrm.Length > iLength)
 {//有
 memStrm.Position = 0;//设置流的位置
 
 byte[] btyDate = new byte[iLength];//声明字节数组
 memStrm.Read(btyDate,0,iLength);//将流内容读入数组
 
 strm.Write(btyDate,0,iLength);//将流内容写入文件
 }
 else
 {//没有
 memStrm.WriteTo(strm);//将流中文本写入文件
 }

 strm.Close();//关闭文件
 }

 ///


 /// 功能简述: 将字符串写入流
 ///

 /// 流
 public void WriteToStream(Stream strm)
 {
 //判断流长度用来确定流中是否有冗余信息
 if (memStrm.Length > iLength)
 {//有
 memStrm.Position = 0;//设置流的位置
 byte[] btyDate = new byte[iLength];//声明字节数组
 memStrm.Read(btyDate,0,iLength);//将流内容读入数组
 
 strm.Write(btyDate,0,iLength);//将数组内容写入另一流
 }
 else
 {//没有
 memStrm.WriteTo(strm);//将流中文本写入另一流
 }
 }

 ///


 /// 功能简述: 清除流
 ///

 public void Clear()
 {
 iLength = 0;//将流字节长度设为0
 iTextLength = 0;//将流文本长度设为0
 }
 }
}


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10752019/viewspace-962585/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    3982
  • 访问量
    7896522