js 字符串截取 slice 的小bug 以及处理方式

简介: js 字符串截取 slice 的小bug 以及处理方式

如果slice对于正常的字符串的使用是没有问题里,例如:

const str = '这里是荷逸啊';
console.log(str.slice(3,5));//荷逸

但是如果是特殊字符串就不可以了

const str = '阿是𠮷娃娃🐱他说的纷';
console.log(str.slice(3, 6));//�娃娃

8.png

需要在进行封装一下

创建js文件 sliceByPoint.js

String.prototype.sliceByPoint = function (pStart, pEnd) {
  let result = ''; // 截取的结果
  let pIndex = 0; // 码点的指针
  let cIndex = 0; // 码元的指针
  while (true) {
    if (pIndex >= pEnd || cIndex >= this.length) {
      break;
    }
    const point = this.codePointAt(cIndex);
    if (pIndex >= pStart) {
      result += String.fromCodePoint(point);
    }
    pIndex++;
    cIndex += point > 0xffff ? 2 : 1;
  }
  return result;
};

使用方式

  import 'sliceByPoint'
    const str = '阿是𠮷娃娃🐱他说的纷';
    console.log(str.sliceByPoint(3, 6));//娃娃🐱
相关文章
|
2天前
|
存储 JavaScript 前端开发
JS上传文件(base64字符串和二进制文件流)
这篇文章介绍了两种JavaScript文件上传的方法:使用FileReader对象将文件读取为base64字符串上传,以及使用FormData对象以二进制文件流的形式上传文件,包括如何处理文件选择、读取和上传的详细代码示例。
JS上传文件(base64字符串和二进制文件流)
|
16天前
|
JSON JavaScript 前端开发
JavaScript实现字符串转json对象的方法
JavaScript实现字符串转json对象的方法
|
3天前
|
JSON JavaScript 前端开发
JS对象和字符串的相互转换
JS对象和字符串的相互转换
12 4
|
8天前
|
JavaScript 前端开发
JS常用数据类型转换(数字型和字符串型之间转换)
JS常用数据类型转换(数字型和字符串型之间转换)
25 2
|
1天前
|
JavaScript 数据处理 索引
js字符串截取
js字符串截取
12 0
|
8天前
|
JavaScript 前端开发 Java
js字符串拼接的几种方式
js字符串拼接的几种方式
8 0
|
10天前
|
存储 JavaScript 前端开发
js 数据类型 字符串、数字和布尔值
js 数据类型 字符串、数字和布尔值
|
16天前
|
JavaScript 前端开发
JavaScript中使用模板字符串拼接和使用字符串拼接有什么区别?
JavaScript中使用模板字符串拼接和使用字符串拼接有什么区别?
|
16天前
|
JavaScript 前端开发 vr&ar
如何在 JavaScript 中对字符串进行索引、拆分和操作
如何在 JavaScript 中对字符串进行索引、拆分和操作
24 0
|
16天前
|
JavaScript 前端开发
在js中正则表达式验证小时分钟,将输入的字符串转换为对应的小时和分钟
这篇文章介绍了如何在JavaScript中使用正则表达式来验证时间字符串的格式(小时和分钟),并提供了将时间字符串转换为JavaScript Date对象的示例代码及其测试结果。