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)即可得到
开发环境: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)即可得到
相关文章推荐
- c# 截取 字符串 固定长度 中英混合
- \t\tjs C# 求字符串 字节长度 截取字符串
- C#实现 获取指定字节长度 中英文混合字符串 的方法
- Java实现按字节长度截取字符串的方法
- C#实现 获取指定字节长度 中英文混合字符串 的方法
- C#如何根据字节截取字符串指定长度
- 用Java实现按字节长度截取中英文数字字符串的方法总结
- 字符串截取固定长度的方法(C#)
- Java实现按字节长度截取字符串
- Java实现按字节长度截取字符串的方法
- C#按字节长度截取字符串
- c# 超长字符串截取固定长度后显示...(超长后面显示点点点) 通用方法
- C#、Java实现按字节截取字符串包含中文汉字和英文字符数字标点符号等
- 字符串截取固定长度的方法(C#)
- C#实现 获取指定字节长度 中英文混合字符串 的方法
- 用Java实现按字节长度截取中英文数字字符串的方法总结
- 用Java实现按字节长度截取字符串
- C#与JS实现 获取指定字节长度 中英文混合字符串 的方法
- C#实现 获取指定字节长度 中英文混合字符串 的方法
- 用Java实现按字节长度截取字符串的方法