• 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)

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

     
     
     
  • 相关阅读:
    微擎使用函数获取用户微信信息
    xshell连接不上linux情况一
    destoon手机端分页
    kvm安装win2012
    kvm安装ubuntu
    KVM的磁盘管理相关
    ubuntu的iptables
    kvm安装win2003
    Centos-6.4 安装mysql-5.5.14
    CentOS 6.4安装bind-9.8.2最新版(DNS服务器)
  • 原文地址:https://www.cnblogs.com/guangzhou11/p/11382086.html
Copyright © 2020-2023  润新知