您的位置:首页 > 编程语言 > C#

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

2008-06-27 23:34 951 查看
最近由于要开发一个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)即可得到
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: