C 中實現擷取固定長度位元組數的字串

2021-04-18 14:06:28 字數 1599 閱讀 7010

最近由於要開發乙個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)即可得到

Java實現位元組陣列中擷取指定長度陣列元素

本文使用system提供的乙個靜態方法arraycopy 實現陣列間的複製。public static native void arraycopy object src,int srcpos,object dest,int destpos,int length src 源陣列 srcpos 源陣列要...

c 位元組陣列的長度 字元陣列

在 c 語言中,字串應用的非常廣泛,但是卻沒有字串型別。為了解決這個問題,c語言使用字元陣列來儲存字串。1.字串與字串結束標誌.在 c 語言中沒有專門定義字串型別,通常使用字元陣列來儲存字串。由於字串也採用字元陣列進行儲存,為了區分普通字元陣列和字串,c 語言規定以字元 0 作為字串結束標誌。例如 ...

字串擷取固定長度的方法 C

這個函式也沒有什麼特別之處,就是可以擷取一定長度的字串,可能小特點就是len是位元組,解決了漢字與英文位元組不一樣導致直接擷取到的長 度不一樣的問題,region 字串擷取函式 public static string cutstring string inputstring,int len 如果截...