zoukankan      html  css  js  c++  java
  • 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)

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

     
     
     
  • 相关阅读:
    winform 与 html 交互 简单案例
    Winform窗口弹出位置控制
    c#预处理指令
    最简单的数据绑定
    Asp.Net细节性问题精萃
    AjaxUploader使用
    Log4net对文件的支持
    Log4net对数据库的支持
    Log4net使用
    Log4net介绍
  • 原文地址:https://www.cnblogs.com/guangzhou11/p/11382086.html
Copyright © 2011-2022 走看看