码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-08-20 12:29:35      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:class   log   截取   current   dex   取字符串   func   OLE   nbsp   

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 方法

标签:class   log   截取   current   dex   取字符串   func   OLE   nbsp   

原文地址:https://www.cnblogs.com/guangzhou11/p/11382086.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!