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)即可得到

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值