3 回答

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
不幸的是,至少我知道沒有內(nèi)置的方法。嘗試這個(gè)
function splitBufToArr(buf, splitStr) {
let start = 0;
let bufArr = [];
let isfound = true;
while (isfound) {
const idx = buf.indexOf(splitStr, start);
if (idx === -1) {
isfound = false;
if (bufArr.length > 0)
bufArr.push(buf.slice(idx));
break;
}
const chunk = buf.slice(start, idx);
start = idx + 1;
bufArr.push(chunk);
}
return bufArr;
}
const buf = Buffer.from('1,5,8,9');
console.log(splitBufToArr(buf, ','));

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
根據(jù)您的需要,您可能最好使用字符串,因?yàn)樗哂蟹指罟δ堋?/p>
但是如果你確實(shí)想將東西保留為緩沖區(qū)而不是字符串,使用 slice 和 indexOf,你可以創(chuàng)建一個(gè)簡(jiǎn)單的 split 函數(shù),..
例如。
function splitBuffer(b, splitWith) {
const ret = [];
let s = 0;
let i = b.indexOf(splitWith, s);
while (i >= 0) {
if (i >= 0) {
ret.push(b.slice(s, i));
}
s = i + 1;
i = b.indexOf(splitWith, s);
}
ret.push(b.slice(s));
return ret;
}
//test
const b = Buffer.from('one=two=three');
console.log(splitBuffer(b, '='))
//result = [ <Buffer 6f 6e 65>, <Buffer 74 77 6f>,
//<Buffer 74 68 72 65 65> ]

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊
在下面的示例中,我們使用庫(kù)iter-ops來處理Buffer
可迭代對(duì)象:
import {pipe, split} from 'iter-ops';
const i = pipe(
? ? buffer,
? ? split(value => value === 0x3D) // 0x3D = code for '='
);
console.log([...i]); //=> split chunks of buffer
添加回答
舉報(bào)