3 回答

TA貢獻1876條經驗 獲得超7個贊
不幸的是,至少我知道沒有內置的方法。嘗試這個
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貢獻1830條經驗 獲得超9個贊
根據您的需要,您可能最好使用字符串,因為它具有分割功能。
但是如果你確實想將東西保留為緩沖區而不是字符串,使用 slice 和 indexOf,你可以創建一個簡單的 split 函數,..
例如。
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貢獻1775條經驗 獲得超8個贊
在下面的示例中,我們使用庫iter-ops來處理Buffer
可迭代對象:
import {pipe, split} from 'iter-ops';
const i = pipe(
? ? buffer,
? ? split(value => value === 0x3D) // 0x3D = code for '='
);
console.log([...i]); //=> split chunks of buffer
添加回答
舉報