分享
 
 
 

增强字符串

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

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

using System;

using System.IO;

using System.Text;

using System.Windows.Forms;

namespace SuperString

{

/// <summary>

/// 创 建 者: superhood

/// 内容描述: 增强字符串类

/// </summary>

public class CSuperString

{

/// <summary>

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

/// </summary>

/// <param name="Left">左参数</param>

/// <param name="Right">右参数</param>

/// <returns>文本类</returns>

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;//返回右参数

}

/// <summary>

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

/// </summary>

/// <param name="Left">左参数</param>

/// <param name="Right">右参数</param>

/// <returns>文本类</returns>

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;//返回左参数

}

/// <summary>

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

/// </summary>

/// <param name="Left">左参数</param>

/// <param name="Right">右参数</param>

/// <returns>文本类</returns>

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;//返回左参数

}

/// <summary>

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

/// </summary>

private int iLength = 0;

/// <summary>

/// 功能简述: 流中文本长度

/// </summary>

private int iTextLength = 0;

/// <summary>

/// 功能简述: 内存流

/// </summary>

private MemoryStream memStrm;

/// <summary>

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

/// </summary>

public CSuperString()

{

memStrm = new MemoryStream();//初始化流

}

/// <summary>

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

/// </summary>

/// <param name="DefaultLength">默认长度(以字节为单位)</param>

public CSuperString(int DefaultLength)

{

memStrm = new MemoryStream(DefaultLength);//初始化流

}

/// <summary>

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

/// </summary>

public int Length

{

get

{

return iLength;

}

}

/// <summary>

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

/// </summary>

public int TextLength

{

get

{

return iTextLength;

}

}

/// <summary>

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

/// </summary>

public int Capacity

{

get

{

return memStrm.Capacity;

}

set

{

if (value >= iLength)

memStrm.Capacity = value;

else

memStrm.Capacity = iLength;

}

}

/// <summary>

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

/// </summary>

/// <param name="Date"></param>

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;//设置字节长度

}

/// <summary>

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

/// </summary>

/// <returns>返回字符串</returns>

public override string ToString()

{

memStrm.Position = 0;//设置流的位置

byte[] btyDate = new byte[iLength];//声明字节数组

memStrm.Read(btyDate,0,iLength);//将流内容读入数组

return Encoding.Default.GetString(btyDate);//将字节数组转换为字符串并返回

}

/// <summary>

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

/// </summary>

/// <param name="FileName">文件名</param>

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();//关闭文件

}

/// <summary>

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

/// </summary>

/// <param name="strm">流</param>

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);//将流中文本写入另一流

}

}

/// <summary>

/// 功能简述: 清除流

/// </summary>

public void Clear()

{

iLength = 0;//将流字节长度设为0

iTextLength = 0;//将流文本长度设为0

}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有