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几种拼接字符串的方法
JS几种拼接字符串的方法
57 1
|
4月前
|
存储 JavaScript 前端开发
JS上传文件(base64字符串和二进制文件流)
这篇文章介绍了两种JavaScript文件上传的方法:使用FileReader对象将文件读取为base64字符串上传,以及使用FormData对象以二进制文件流的形式上传文件,包括如何处理文件选择、读取和上传的详细代码示例。
539 2
JS上传文件(base64字符串和二进制文件流)
|
3月前
|
JavaScript
js 解析 byte数组 成字符串
js 解析 byte数组 成字符串
93 5
|
1月前
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
|
1月前
|
JavaScript 前端开发 索引
JavaScript学习第二章--字符串
本文介绍了JavaScript中的字符串处理,包括普通字符串和模板字符串的使用方法及常见字符串操作方法如`charAt`、`concat`、`endsWith`等,适合前端学习者参考。作者是一位热爱前端技术的大一学生,专注于分享实用的编程技巧。
27 2
|
2月前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
49 3
|
3月前
|
JavaScript 前端开发
javascript创建字符串
javascript创建字符串
|
3月前
|
JavaScript 前端开发
如何在JavaScript中替换字符串:一篇详细指南
如何在JavaScript中替换字符串:一篇详细指南
|
3月前
|
存储 JavaScript
js切割截取字符串方法
js切割截取字符串方法
63 2
|
3月前
|
Web App开发 JavaScript 前端开发
JavaScript 模板字符串
JavaScript 模板字符串
53 3