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));//娃娃🐱
相关文章
|
4天前
|
JavaScript 前端开发
用JavaScript正则表达式匹配对应字符串高亮显示,并过滤掉空格、<、>等HTML节点符号
用JavaScript正则表达式匹配对应字符串高亮显示,并过滤掉空格、<、>等HTML节点符号
|
4天前
|
JavaScript 前端开发 索引
JavaScript中与字符串相关的方法
JavaScript中与字符串相关的方法
|
2天前
|
JSON JavaScript 前端开发
js将json字符串还原为json对象
【5月更文挑战第14天】js将json字符串还原为json对象
13 1
|
2天前
|
JavaScript 数据处理 索引
js字符串截取
js字符串截取
11 1
|
2天前
|
JavaScript 前端开发
JavaScript中科学计数法转化为数值字符串形式
JavaScript中科学计数法转化为数值字符串形式
|
4天前
|
存储 JavaScript 前端开发
JavaScript字符串方法详解
JavaScript字符串方法详解
18 0
|
4天前
|
SQL 缓存 JavaScript
深入解析JavaScript中的模板字符串
深入解析JavaScript中的模板字符串
14 1
|
4天前
|
JavaScript 索引
js字符串操作的方法
js字符串操作的方法
12 0
|
4天前
|
JavaScript 前端开发 索引
js关于字符串的方法
js关于字符串的方法
12 0
|
4天前
|
JavaScript 前端开发
js关于字符串的方法
js关于字符串的方法
14 0