排坑·ASCII码为160的空格(nbsp)
| 阅文时长 | | 2.83分钟 | 字数统计 | | 1345.2字符 |
| 『排坑·ASCII码为160的空格(nbsp)』 | |||
| 编写人 | | SCscHero | 编写时间 | | Wednesday, September 9, 2020 |
| 文章类型 | | 系列 | 完成度 | | 待完善 |
| 座右铭 | 每一个伟大的事业,都有一个微不足道的开始。Hello World! | ||
一、问题切入 完成度:100%
a) 尝试
今日在使用JS的split()方法的时候,使用空格作为分隔符,截取一段带有空格的文字,截取失败。调试过程中,没有发现问题,但确实是"失败"了。
后来经过百度,JS的split()截取空格的坑,一无所获(搜到的文章同样的一篇,可气,写一篇文章发那么多地方..........)。后来尝试了一些格式化的方法,替换方法还是行不通。最终,打印了一下这个对象,有了眉目。我的这段字符的空格是HTML5代码的" "的这种空格,似乎和其他空格有所不同。
b) 解决
于是将这个空格复制出来,再用split()方法截取,结果截取成功。证明:这两个空格确实是不同的
二、形同而ASCII不同 完成度:100%
a) 获取ASCII码
我们都知道,每个字符都有自己唯一的ASCII码,这两个空格也不例外。下面来看JS的字符与ASCII码互转的方法:
String.fromCharCode([ASCII码参数,Int类型]);//输入ASCII码,返回字符
[字符,Char类型].charCodeAt();//字符拓展方法,返回ASCII码
看下两种空格的ASCII码分别是多少。
结论:不间断空格(No-break thin space,nbsp)是160,普通空格是32。
b) 认识不间断空格
无法自动换行
编辑器一般会把自动换行放在空格字符处。但是,有些文本内容在排版时不适合被放在连续的一行行尾与下一行行首。例如:"100 km",就不应该在其中间的那个空格处换行。所以编辑器应该在"100"与"km"之间放置一个"不换行空格",使得"100 km"是不可断开换行的,如果它不适合在行尾的剩余排版空间,就整体排版到下一行行首。
--选自《维基百科-机翻》
无法合并空白字符
在SGML、HTML、TEX与LATEX,把连续的空白字符(如空格符、换行符、tab符等)视作一个空格字符。这使得作者可以自由排版其源码而不影响其最终产生的效果。相反,不换行空格在上述语言环境下,不与其它相邻的空白字符合并,这使得作者可用不换行空格安排格式化排版文本的额外的视觉空间效果。例如在HTML,我们经常使用 来控制排版,也是利用了它不合并、以及不换行的特点。
c) 在不同的设备以及系统上输入nbsp
在HTML中,我们可以如下输入空格。
- 不断行的空白格 或 //输入一个 或 可以缩进四分之一个汉字大小。
- 半方大的空白 或 //输入一个 或 可以缩进二分之一个汉字大小。
- 全方大的空白 或 //输入一个 或 可以缩进一个汉字大小。
三、总结 完成度:100%
另外,在许多语言都有的Trim()方法,即去除首尾空格功能。这个方法某些语言只能去除ASCII码为32的普通空格,需要处理的话,最好将空格统一为一种。博主的思路是使用Replace()方法将ASCII码为160的空格全局替换掉,当然也可以另寻良策。博主测试过JS是可以去除的。回头测试一下C#。
所以说,肉眼看不出差距的空格,实际并不是一种字符。以后再使用空格的使用要小心了。有可能"此空格非彼空格"。
原创博文,未经许可请勿转载。
如有帮助,欢迎点赞、收藏、关注。如有问题,请评论留言!如需与博主联系的,直接博客私信SCscHero即可。
排坑·ASCII码为160的空格(nbsp)的更多相关文章
- String trim 坑 对于ascii码为160的去不掉
大家在使用string 的trim去除空格的时候,要注意一个坑呀,对于ascii码为160的去不掉 import java.util.Arrays; /** * Created by bjchen ...
- 排坑·IPhone&IOS中不兼容正则中的断言匹配
阅文时长 | 1.14分钟 字数统计 | 1834.4字符 主要内容 | 1.问题切入 2.什么是断言匹配 3.断言匹配的替换方案 4.声明与参考资料 『排坑·IPhone&IOS中不兼容正则 ...
- 常见ascii码记忆
常见字符的ASCII码值如下:空格的ASCII码值为32:数字0到9的ASCII码值分别为48到57:大写字母"A"到"Z"的ASCII码值分别为65到90:小 ...
- C# 参数签名字符串按 ASCII码排序,注意其中的坑
参数签名中通常是按键值对中键名称的ASCII按从小到大的顺序排序后进行hash为签名字符串.不要直接使用 SortedDictionary<string, string> 有坑的,他是按数 ...
- C# 字符串按 ASCII码 排序,注意其中的小坑
https://www.cnblogs.com/similar/p/6739293.html 在和银行做数据对接时,涉及到数据传输时的验签及加密.其中数据签名方案中就要求数据项根据属性名按 ASCII ...
- C语言中两位ASCII码可以表示汉字
最近偶然有人问到这个相关字符编码的问题,所以百度了下参考了这两个资料,进行了简单分析. ******************************************************** ...
- Python3 中bytes数据类型深入理解(ASCII码对照表)
bytes的来源 bytes 是 Python 3.x 新增的类型,在 Python 2.x 中是不存在的. bytes 的意思是"字节",以字节为单位存储数据.而一个字节二进制为 ...
- sort将文件的每一行作为一个单位按ASCII码值进行比较
1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出. [rocrocket@rocrocket progr ...
- ASCII码
ASCII(pronunciation: /ˈæski/ ASS-kee,American Standard Code for Information Interchange,美国信息交换标准代码)是 ...
随机推荐
- Hadoop集群--linux虚拟机Hadoop安装与配置、克隆虚拟机
Hadoop集群 第四章 Hadoop安装与配置.克隆虚拟机 一.Hadoop安装与配置 1.将hadoop安装包通过Xftp传输到虚拟机的/software目录下 2.进入/software目录下, ...
- Python数据分析入门(一):搭建环境
Python版本: 本课程用到的Python版本都是3.x.要有一定的Python基础,知道列表.字符串.函数等的用法. Anaconda: Anaconda(水蟒)是一个捆绑了Python.cond ...
- OO第一单元感悟与体会
第一单元的三次编程作业结束了,现在分享一些我对自己作业的分析和感想 1.程序结构的分析 第一次作业: 本次作业我的主要思路是,为每一项写一个正则表达式,在输入的字符串中匹配每一项,多项式类中保存着一个 ...
- ES9的新特性:正则表达式RegExp
简介 正则表达式是我们做数据匹配的时候常用的一种工具,虽然正则表达式的语法并不复杂,但是如果多种语法组合起来会给人一种无从下手的感觉. 于是正则表达式成了程序员的噩梦.今天我们来看一下如何在ES9中玩 ...
- D. 【例题4】字符串环
解析 字符串的操作,可以用函数解决这个问题 s 2. f i n d ( s 1. s u b s t r ( i , j ) ) s2.find~(s1.substr~(i,~j)) s2.find ...
- Windows10家庭版安装docker
在公司,一直使用mac系统,在mac上安装使用docker还是比较方便的,可本人心血来朝,家里是win10 home版,就想在windows上刷一刷. 好了,废话不多说,直接上干货. 为了不误导广大爱 ...
- CSS @property,让不可能变可能
本文主要讲讲 CSS 非常新的一个特性,CSS @property,它的出现,极大的增强的 CSS 的能力! 根据 MDN -- CSS Property,@property CSS at-rule ...
- 2020 OO 第四单元总结 UML
title: 2020 OO 第四单元总结 date: 2020-06-14 19:10:06 tags: OO categories: 学习 1. 本单元三次作业的架构设计 本单元的代码编写与第三单 ...
- Pyinstaller原理详解
Pyinstaller原理详解 什么是Pyinstaller Pyinstaller可以把Python程序打包成exe文件,可以在没有Python的电脑上运行,主要用于生产用. Python.h! 在 ...
- RE.从单链表开始的数据结构生活(bushi
单链表 单链表中节点的定义 typedef struct LNode{ int data;//数据域 struct LNode *next;//定义一个同类型的指针,指向该节点的后继节点 }LNode ...