最近由于要开发一个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)即可得到