分享

物联网学习教程——增强字符串

 千锋IT培训 2019-09-19

  之前有朋友问过小编一个问题,你对增强字符串这块了解吗?其实小编很多时候也只是稍微懂一点,就先不和大家分享了,如果有想了解的话,可以看看这个,是之前我收藏的!

  一个自定义类,用于大规模的字符串连接,如拼接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转成字串的方法大同小异.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约