charAt,chartCodeAt,codePointAt,fromCodePoint,fromCharCode

生僻字的length算2,有些空格是特殊空格,比如\u3000

u+3000不是全角空格,u+3000是表意字空格(Ideographic Space),宽度和一个表意字(汉字)相同。它应当被当做汉字来处理。比如,在一些排版中,在特别尊敬的人的名字前面要空一格,这时候就应该用表意字空格u+3000。或者在一些中文名单列表里,两个字的姓名要中间空一个字,来和三个字的姓名对齐,这时候也应该用表意字空格u+3000。由上可知,表意字空格u+3000绝不能被随意删去,否则会导致排版甚至语义出现问题。u+2003才是全角空格(Em Space,更准确的翻译是全身空格),宽度和一个字身高度相同(也就是等于字号)。这两者在大部分情况下宽度相同,因而容易混淆。但是,假设有一款中文字体的汉字是窄的,比如宽度只有高度的三分之二,那么,此时表意字空格u+3000也应该和汉字一样是三分之二宽,而全角空格u+2003应该始终是个正方形(宽度和高度一样)

\u3000之类的特殊空格无法用js自带的trim()删除,但可以用正则的\s删除

let str = '   abcde    ';

// 使用一个正则表达式同时处理开头和结尾的空格
str = str.replace(/^\s+|\s+$/g, match => 'p'.repeat(match.length));
// console.log(str);
/*
charAt 返回的是指定位置的字符(字符串形式)。
charCodeAt 返回的是指定位置的字符的 Unicode 编码(数值形式,10进制)。
Unicode编码取值: 0 - 65535  (0x0000 - 0xFFFF),
js中Unicode是以十六进制代码外加开头 \u 表示的字符串,例如:爱   js中表示为 \u7231
*/
var r='魇😀😀🤣𠮷严 a 𤾩 w看'
for(let i of r){
  console.log('======length测量的长度',i.length);
  if(i.length==2){
    for (let j = 0; j < i.length; j++) {  
    let char = i.charAt(j);
    let code = i.charCodeAt(j);
    let pt = i.codePointAt(j);
    console.log(`当前是${i},长度为2:,charAt为 ${char},10进制: ${code}, 16进制: ${code.toString(16)},码点:${pt}`);  
   }
  }else{
    let char = i.charAt();
    let code = i.charCodeAt();  
    let pt = i.codePointAt();
    console.log(`当前是${i},长度为1: charAt为${char},10进制: ${code}, 16进制: ${code.toString(16)},码点:${pt}`);  
  }
}
//fromCodePoint可以接受0x开头的16进制,也可以默认的10进制
String.fromCodePoint(0xd83d,0xde00);//输出😀
String.fromCodePoint(119,30475);//输出w看
String.fromCodePoint(39751);//如果字符length为2,用codePointAt获取第0位的码点即可还原

/***********************\
\u4e2d\u56fd中国
4e2d转成10进制是20013
56fd转成10进制是22269
/***********************/
String.fromCharCode(20013)//中
String.fromCharCode(22269)//国
相关推荐
程序员_三木1 分钟前
Three.js入门-Raycaster鼠标拾取详解与应用
开发语言·javascript·计算机外设·webgl·three.js
顾平安1 小时前
Promise/A+ 规范 - 中文版本
前端
聚名网1 小时前
域名和服务器是什么?域名和服务器是什么关系?
服务器·前端
桃园码工1 小时前
4-Gin HTML 模板渲染 --[Gin 框架入门精讲与实战案例]
前端·html·gin·模板渲染
沈剑心1 小时前
如何在鸿蒙系统上实现「沉浸式」页面?
前端·harmonyos
一棵开花的树,枝芽无限靠近你1 小时前
【PPTist】组件结构设计、主题切换
前端·笔记·学习·编辑器
m0_748237051 小时前
Chrome 关闭自动添加https
前端·chrome
prall1 小时前
实战小技巧:下划线转驼峰篇
前端·typescript
开心工作室_kaic2 小时前
springboot476基于vue篮球联盟管理系统(论文+源码)_kaic
前端·javascript·vue.js
川石教育2 小时前
Vue前端开发-缓存优化
前端·javascript·vue.js·缓存·前端框架·vue·数据缓存