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)

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

 

 
 
 
posted @ 2019-08-20 11:54  1点  阅读(466)  评论(0编辑  收藏  举报