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)//国

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/443515.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python安装|PyCharm Professional 下载安装教程。2024最新版,亲测使用!

一、下载地址&#xff1a; 二、Python的下载及安装&#xff1a; 1、从上面网址进入Python官网 2、安装流程图&#xff1a; 双击已经下载好的python-*.*.*-amd64.exe文件&#xff0c;开始安装 最后就等它自己安装完成就好了 3、检验是否安装完成&#xff1a; windowsR快捷键…

Spring系列 循环依赖

文章目录 注入方式循环依赖的场景单例创建流程getSingletoncreateBeandoCreateBeancreateBeanInstance 循环依赖分析为什么都使用构造函数无法解决&#xff1f;为什么使用Autowired可以解决&#xff1f;为什么要添加到 earlySingletonObjects 缓存中&#xff1f;allowCircularR…

计算机毕业设计 基于Python音乐平台的设计与实现 Python毕业设计 Python毕业设计选题 Vue 前后端分离【附源码+安装调试】

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

windows C++-移除界面工作线程(一)

本文档演示了如何使用并发运行时将 Microsoft 基础类 (MFC) 应用程序中由用户界面 (UI) 线程执行的工作移动到工作线程。 本文档还演示了如何提高冗长绘制操作的性能。 通过将阻塞性操作&#xff08;例如&#xff0c;绘制&#xff09;卸载到工作线程来从 UI 线程中移除工作&am…

浙大数据结构:08-图8 How Long Does It Take

这道题算是较为简单的拓扑排序题&#xff0c;难度不大 机翻 1、条件准备 n,m为n个结点&#xff0c;m条边。 tim数组存到该结点完成的最早时间&#xff0c;会一点点更新 graph存有向边的时间 indegree数组存每个结点的入度 #include <iostream> #include <vector&g…

采用反相正基准电压电路的反相运算放大器

1 简介 本设计使用采用反相正基准电压的反相放大器将 –5V 至 –1V 的输入信号转换为 3.3V 至 0.05V 的输出电压。该电路可用于将传感器负输出电压转换为可用的 ADC 输入电压范围。 2 设计目标 2.1 输入 2.2 输出 2.3 电源 3 电路设计 根据设计目标&#xff0c;最终设计的电…

Python 与 Pycharm 的简易安装教程,包含Pycharm的修改

一. 官方网站 Python网址&#xff1a;python唯一的官方网址。 Pycharm网址&#xff1a;Pycharm的官方网址。 二. python安装步骤 滑动到红色框内 Downloads 导航栏。 红色框是选择适合自己电脑系统和版本的部分&#xff0c;蓝色框是选择系统的部分&#xff0c;黄色框是版本号。…

【Golang】Go语言中缓冲bufio的原理解读与应用实战

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

Word中如何删除表格下一页的空白页

Reference&#xff1a; [1] Word空白页怎么都删除不掉&#xff1f;用这6个方法随便删&#xff01; - 知乎 (zhihu.com)

实现TCP Connect的断线重连机制:策略与实践

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;Linux从入门到进阶 欢迎大家点赞收藏评论&#x1f60a; 断线重连机制&#xff0c;它成为确保应用在网络不稳定情况下仍能持续提供服务的关键技术之一。本文旨在深入探讨TCP&#xff08;传输控制协…

使用Materialize制作unity的贴图,Materialize的简单教程,Materialize学习日志

Materialize 官网下载地址&#xff1a;http://boundingboxsoftware.com/materialize/ github源码地址&#xff1a;https://github.com/BoundingBoxSoftware/Materialize 下载地址&#xff1a;http://boundingboxsoftware.com/materialize/getkey.php 下载后解压运行exe即可 …

YoloV8改进策略:BackBone改进|CAFormer在YoloV8中的创新应用,显著提升目标检测性能

摘要 在目标检测领域,模型性能的提升一直是研究者和开发者们关注的重点。近期,我们尝试将CAFormer模块引入YoloV8模型中,以替换其原有的主干网络,这一创新性的改进带来了显著的性能提升。 CAFormer,作为MetaFormer框架下的一个变体,结合了深度可分离卷积和普通自注意力…

线性回归逻辑回归-笔记

一、线性回归&#xff08;Linear Regression&#xff09; 1. 定义 线性回归是一种用于回归问题的算法&#xff0c;旨在找到输入特征与输出值之间的线性关系。它试图通过拟合一条直线来最小化预测值与真实值之间的误差。 2. 模型表示 线性回归模型假设目标变量&#xff08;输…

深度学习基础—卷积神经网络示例

1.卷积神经网络的结构 在之前的博客《深度学习—简单的卷积神经网络》&#xff0c;仅由卷积层构成网络的全部&#xff0c;这还不是标准的网络结构&#xff0c;本文将继续介绍标准的卷积神经网络结构有哪些&#xff1f; 深度学习基础—简单的卷积神经网络https://blog.csdn.net…

[C++]使用纯opencv部署yolov11-seg实例分割onnx模型

【算法介绍】 在C中使用纯OpenCV部署YOLOv11-seg进行实例分割是一项具有挑战性的任务&#xff0c;因为YOLOv11通常是用PyTorch等深度学习框架实现的&#xff0c;而OpenCV本身并不直接支持加载和运行PyTorch模型。然而&#xff0c;可以通过一些间接的方法来实现这一目标&#x…

opencvjs 在前端的使用

一、opencv 官网 https://opencv.org/ 二、opencv是什么 三、opencvjs前端使用网站 https://docs.opencv.org/4.x/d0/d84/tutorial_js_usage.html https://docs.opencv.org/4.x/d5/d10/tutorial_js_root.html 四、opencvjs demo 举例 <!DOCTYPE html> <html>…

Ubuntu22.04之mpv播放器高频快捷键(二百七十)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

ML 系列:机器学习和深度学习的深层次总结( 15) — KNN — 第 1 部分

一、说明 K-最近邻 (KNN) 算法是一种流行的监督机器学习算法&#xff0c;用于分类和回归任务。它是非参数惰性学习算法的一个典型例子。KNN 被认为是一种惰性学习算法&#xff0c;因为它在训练阶段不对底层数据分布做出任何假设&#xff0c;也不从训练数据中学习特定模型。相反…

Golang | Leetcode Golang题解之第466题统计重复个数

题目&#xff1a; 题解&#xff1a; func getMaxRepetitions(s1 string, n1 int, s2 string, n2 int) int {n : len(s2)cnt : make([]int, n)for i : 0; i < n; i {// 如果重新给一个s1 并且s2是从第i位开始匹配 那么s2可以走多少位&#xff08;走完了就从头开始走p1, p2 :…

开发环境搭建之JAVA多个JDK版本安装

由于项目需要安装多个版本JDK、所以在此记录一下安装过程&#xff1a; 下载JDK1.8 11 17 等多个版本 简单粗暴一看就会、直接从官网下载exe安装包、然后配置环境变量即可 JDK1.8 JDK11 JDK17 安装完成之后如下图&#xff1a; 环境变量配置 右击“我的电脑”属性、找到…