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= ; //开始的长度
// console.log(this.toString());
let target = this.indexOf(seq);
// console.log(target); //输出找到目标之前的长度
while(-!=(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= ; //开始的长度
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
this.indexOf(seq,index)
当前的位置
current=this.indexOf(seq,index)
下次要开始查找的位置
当前的位置 + 查找字符串的 长度
current + len;
做一个判断 如果 查找到我们传入的字符串 我们就将 查找到的目标之前的 字符串添加到数组里面
while(-!=(current=this.indexOf(seq,index))) {
arr.push(this.slice(index,current))
index= current + len; //下次查找的长度应该是目标之前的长度 + 目标的长度
}
截取字符串
this.slice(index,current)
截取的是每次判断的 目标的 之前的
Node Buffer 利用 slice + indexOf 生成 split 方法的更多相关文章
- 区分slice,splice和split方法
1.slice(数组) 用法:array.slice(start,end) 解释:该方法是对数组进行部分截取,并返回一个数组副本:参数start是截取的开始数组索引,end参数等于你要取的最后一个字符 ...
- js中slice,splice和split方法的区别
1.slice(数组) 用法:array.slice(start,end) 解释:该方法是对数组进行部分截取,并返回一个数组副本:参数start是截取的开始数组索引,end参数等于你要取的最后一个字符 ...
- 关于splice()方法,slice() 、split()方法讲解,reverse()方法、replace()方法
1.slice() 方法可从已有的数组中返回选定的元素. 语法 arrayObject.slice(start,end) 参数 描述 start 必需.规定从何处开始选取.如果是负数,那么它规定从数组 ...
- 利用split方法计算字符串中出现字母最多的次数
最近练习一些简单的算法题,知道自己很不聪明,但却没想到用了这么久,划算不划算是个需要考虑的问题, 其中有个算法是:统计一个字符串出现最多的字母,网上很多自己的见解,但是才疏学浅,有些地方看的有点困难, ...
- split()方法 splice()方法 slice()方法
split()方法是对字符串的操作:splice()和slice()是对数组的操作.slice()也可用于字符串. 一.作用对象 1.split()方法是对字符串的操作:splice()和slice( ...
- 利用java反射动态调用方法,生成grid数据
项目中需要java后台查询并组装前台grid的数据,数据行数不定,数据行定义不定,开始用了最原始的方法,写了几百行,就是前台需要什么字段后台拼接什么字段,java代码冗余量非常大,并且不够灵活,一旦前 ...
- 利用Java动态生成 PDF 文档
利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那 ...
- 利用GCC编译器生成动态链接库和静态链接库
转载请标明:http://www.cnblogs.com/winifred-tang94/ 1.编译过程 gcc –fPIC –c xxx.c 其中-fPIC是通知gcc编译器产生位置独立的目标代码. ...
- String.split()方法你可能不知道的一面
一.问题 java中String的split()是我们经常使用的方法,用来按照特定字符分割字符串,那么我们看以下一段代码: public void splitTest() { String str = ...
随机推荐
- 十四、RF中SSHLibrary库介绍
A.安装SSHLibrary: pip2 install robotframework-sshlibrary (导入SSHLibrary) B.远程连接linux服务器 1.#连接linux服 ...
- Vue创建全局组件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- MAC安装navcat
安装及破解,参照此文: https://blog.csdn.net/marswill/article/details/79808416
- WPF DevExpress Chart控件 需要引用的类库
DevExpress.Charts.v16.1.Core.dll DevExpress.Data.v16.1.dll DevExpress.Mvvm.v16.1.dll DevExpress.Xpf. ...
- 阶段3 1.Mybatis_09.Mybatis的多表操作_4 完成account一对一操作-建立实体类关系的方式
定义user的实体.然后生成getter和setter 定义一个可以封装Account和User的Map type这里虽然是account类型 这一段只能保证account的数据完成.并不能保证use ...
- 中国MOOC_零基础学Java语言_第3周 循环_1奇偶个数
第3周编程题 查看帮助 返回 第3周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截 ...
- 【Linux 应用编程】进程管理 - 进程间通信IPC之共享内存 mmap
IPC(InterProcess Communication,进程间通信)是进程中的重要概念.Linux 进程之间常用的通信方式有: 文件:简单,低效,需要代码控制同步 管道:使用简单,默认阻塞 匿名 ...
- 【Linux开发】Linux下jpeglib库的安装详解
Linux下jpeglib库的安装详解 首先要下载所需的库压缩包:jpegsrc.v6b.tar.gz或 jpegsrc.v8b.tar.gz 然后将下载的压缩包随便放在和解压到你喜欢的地方. # t ...
- 使用app.config中的数据对数据库链接信息初始化
看到别人数据库信息都是在app.config里面设置的,今天来尝试了一下,报了 "System.Configuration.ConfigurationSettings.AppSettings ...
- python 并发编程 多进程 模拟抢票
抢票是并发执行 多个进程可以访问同一个文件 多个进程共享同一文件,我们可以把文件当数据库,用多个进程模拟多个人执行抢票任务 db.txt {"count": 1} 并发运行,效率高 ...