C#中实现截取固定长度字节数的字符串

最近由于要开发一个ERP和采集器对接的功能,主要功能是将ERP的数据转换成一定格式的文件,并可传输至采集器。

开发环境:VS2005

采集器型号:DT900、DT930

数据格式(说明)

工作单号(占10个字符)|类型(占6个字符)|分拣编码/物流方向(占16个字符)|配载方式/递送人员(占16个字符)

数据文本实例:

10000000000进港  BBD            张三           

20000000000出港  天津            干线物流            

.............

10000000000进港  BBLL           wang三         

技术限制:

由于C#在截取一个字符串中一定数据的字字符串时,汉字算一个字符(实际上占两个字节),英文字母也算是一个字符(实际上占一个字节),假如截取相应字节长度的字符时,中英文字符的个数产生了不同长度字节的字符串,一时未能找到一个直接可以调用的函数来处理,经过半天的实践,终于找到解决的办法了,现分享一下我的结果,请大侠制定,给出更好的处理办法,抛砖引玉吧。

我写的那个处理方法的源代码如下:        

public string Ctr(string pstr, int Num)       

 {           

string StrNum=pstr;            

byte[] bytes1 = System.Text.Encoding.Default.GetBytes(StrNum.Trim());           

int icha = bytes1.Length;            

 if (icha > Num)           

{               

byte[] bytes2 = System.Text.Encoding.Default.GetBytes(pstr.Trim().Substring(0, Num));                 string strNum1 = "";               

 strNum1 = System.Text.Encoding.Default.GetString(bytes2, 0, Num);                

 int len = strNum1.Length;                

string subStr = pstr.Substring(0, len);                

 if (subStr != strNum1)                 

{                   

StrNum = System.Text.Encoding.Default.GetString(bytes2, 0, Num-1);               

 }               

else               

 {                   

StrNum=strNum1;               

 }           

}            

 return StrNum;        

}

调用这个方法,就可以从原字符串中得到任意字节长度的字字符串了,比如:

原字符串:string pStr="章khkh1524汉54646 "

要截取11个字节长度的字符串,

理论结果:章khkh1524

调用该方法:

Ctr(pStr,11)即可得到

你可能感兴趣的:(工作,String,物流,C#,byte)