字串轉位元組擷取和補位數方法

2021-10-07 08:56:21 字數 1101 閱讀 8780

最近做專案的時候,後台介面需要上送的乙個位元(返回也是字串,但是擷取也是按字元長度擷取)是多個字段拼接的字串,但是每個欄位的長度是按位元組長度來上送的,字段裡面經常有漢字和字元等,這就很麻煩。為了方便我就自己寫個方法來實現;

首先乙個漢字等於兩個位元組,只要我們把漢字區分出來 就可以通過字串長度得到位元組的長度了;

let str = "20200620    test測試";

let strlen = str.length; //字串長度

let chrlen = str.replace(/[^\x00-\xff]/g, '**').length; // str位元組長度

console.log('字串長度'+strlen,'位元組長度'+chrlen) // 18 20

直接上** 

/*   

* param str 要擷取的字串

* param type 方法型別 1 字元轉位元組 ; 2 按位元組長度擷取

* param l type==1時,必傳,為2時傳空; 要擷取的位元組長度,注意是位元組不是字元,乙個漢字兩個位元組

* param l1 type==2時,必傳 為1時傳空 擷取位元組的起始位置 (不包括)

* param l2 type==2時,必傳 為1時傳空 擷取位元組的截止位置(包括)

* return 擷取後的字串

*/function cutstraddspace(str,type,l,l1,l2) else if(chrlen < l) }}

return result;

}}let str = "420190405 20190501測試加油無誤";

console.log(cutstraddspace(str,1,50,'','')+"空格檢測")

console.log(cutstraddspace(str,2,'',19,31))

不同的type後面的引數要注意別傳錯了;其實現就是通過str.replace(/[^\x00-\xff]/g, '**').length獲取位元組長度,然後根據不同的需要來擷取或者補空格;大家有新的需求可以提出來  一起討論下優化實現

python 位元組轉字串

bytes轉字串方式一 b b xe9 x80 x86 xe7 x81 xab string str b,utf 8 bytes轉字串方式二 b b xe9 x80 x86 xe7 x81 xab string b.decode 第一引數預設utf8,第二引數預設strict bytes轉字串方式三...

多位元組字串轉寬位元組字串(windows)

windows函式 multibytetowidechar提供將多位元組字串轉換為寬位元組字串的功能 參考windows核心程式設計2.8 int multibytetowidechar uint ucodepage,dword dwflags,pcstr pmultibytestr,int cbm...

字串擷取方法

string str 123abc456 int i 3 1.取字串的前i個字元str str.substring 0,i or str str.remove i,str.length i 2.去掉字串的前i個字元 str str.remove 0,i or str str.substring i ...