Node Buffer 利用 slice + indexOf 生成 split 方法

Posted guangzhou11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node Buffer 利用 slice + indexOf 生成 split 方法相关的知识,希望对你有一定的参考价值。

demo 

let  buf  = Buffer.from(你你我们我你们);
Buffer.prototype.split  = function (seq) 
   let  arr=[];
   let  len  =  Buffer.from(seq).length
//    console.log(len);
   let index= 0; //开始的长度
//    console.log(this.toString());
   let  target = this.indexOf(seq);
//    console.log(target);   //输出找到目标之前的长度

  while(-1!=(current=this.indexOf(seq,index))) 
    arr.push(this.slice(index,current))
    index=  current + len;   //下次查找的长度应该是目标之前的长度 +  目标的长度
  
  arr.push(this.slice(index))
  //    index=  target + len;   //下次查找的长度应该是目标之前的长度 +  目标的长度
   return  arr.toString();

console.log(buf.split())

输出:

你你,们,你们
 
先得出 我们要分隔的字符串 的长度
Buffer.from(seq).length

我们要返回的是一个数组 所以先声明数组为空

let  arr=[];

  return  arr.toString();

开始分割时长度为 0 

let index= 0; //开始的长度

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

this.indexOf(seq,index)

当前的位置 

current=this.indexOf(seq,index)

下次要开始查找的位置 

当前的位置 +  查找字符串的 长度 

current + len;

做一个判断 如果 查找到我们传入的字符串 我们就将 查找到的目标之前的 字符串添加到数组里面

 while(-1!=(current=this.indexOf(seq,index))) 
    arr.push(this.slice(index,current))
    index=  current + len;   //下次查找的长度应该是目标之前的长度 +  目标的长度
  

 截取字符串

this.slice(index,current)

截取的是每次判断的 目标的 之前的 

 

 
 
 

以上是关于Node Buffer 利用 slice + indexOf 生成 split 方法的主要内容,如果未能解决你的问题,请参考以下文章

nodejs buffer 内存泄漏问题

buf.slice()

node04-buffer

Node.Buffer

Node.js Buffer

深入浅出Node.js - 理解Buffer