之前有朋友问过小编一个问题,你对增强字符串这块了解吗?其实小编很多时候也只是稍微懂一点,就先不和大家分享了,如果有想了解的话,可以看看这个,是之前我收藏的! 一个自定义类,用于大规模的字符串连接,如拼接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 } } } 字符串转换 1如何将字串String转换成整数int? A.有两个方法: 1).int i=Integer.parseInt([String]);或 i=Integer.parseInt([String],[int radix]); 2).int i=Integer.valueOf(my_str).intValue(); 注:字串转成Double,Float,Long的方法大同小异. 2如何将整数int转换成字串String? A.有三种方法: 1.)String s=String.valueOf(i); 2.)String s=Integer.toString(i); 3.)String s=""+i; 注:Double,Float,Long转成字串的方法大同小异. |
|