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)//国
相关推荐
天才熊猫君几秒前
配置与数据分离:一种可视化搭建的属性编辑方案
前端·javascript
林希_Rachel_傻希希10 分钟前
web性能之相关路径——AI总结
前端·javascript·面试
不好听61313 分钟前
从零搭建一个 RAG 语义搜索系统 —— DEMO的初始阶段
javascript·面试·llm
何时梦醒17 分钟前
上下文工程(Context Engineering):AI 应用开发的新范式 —— 从理论到实战全解析
javascript
竹林81818 分钟前
用 wagmi v2 踩坑两天,我终于搞懂了多链钱包切换在 DeFi 前端中的正确姿势
前端·javascript
用户21366100357221 分钟前
Vue项目搜索功能与面包屑导航
前端·javascript
星栈24 分钟前
LiveView 的实时通信,爽是爽,但 PubSub 和广播也最容易把自己绕晕
前端·前端框架·elixir
用户29307509766925 分钟前
告别关键词匹配,拥抱向量语义 —— RAG 搜索从零到一
前端
独孤留白35 分钟前
从C到Rust:告别 C 的"指针 + 长度"手动模式
前端·rust
阿黎梨梨1 小时前
揭秘大语言模型的底层逻辑:从文本分词到高维向量的计算之旅
javascript·人工智能