阅文时长 | 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)的更多相关文章

  1. String trim 坑 对于ascii码为160的去不掉

    大家在使用string   的trim去除空格的时候,要注意一个坑呀,对于ascii码为160的去不掉 import java.util.Arrays; /** * Created by bjchen ...

  2. 排坑·IPhone&IOS中不兼容正则中的断言匹配

    阅文时长 | 1.14分钟 字数统计 | 1834.4字符 主要内容 | 1.问题切入 2.什么是断言匹配 3.断言匹配的替换方案 4.声明与参考资料 『排坑·IPhone&IOS中不兼容正则 ...

  3. 常见ascii码记忆

    常见字符的ASCII码值如下:空格的ASCII码值为32:数字0到9的ASCII码值分别为48到57:大写字母"A"到"Z"的ASCII码值分别为65到90:小 ...

  4. C# 参数签名字符串按 ASCII码排序,注意其中的坑

    参数签名中通常是按键值对中键名称的ASCII按从小到大的顺序排序后进行hash为签名字符串.不要直接使用 SortedDictionary<string, string> 有坑的,他是按数 ...

  5. C# 字符串按 ASCII码 排序,注意其中的小坑

    https://www.cnblogs.com/similar/p/6739293.html 在和银行做数据对接时,涉及到数据传输时的验签及加密.其中数据签名方案中就要求数据项根据属性名按 ASCII ...

  6. C语言中两位ASCII码可以表示汉字

    最近偶然有人问到这个相关字符编码的问题,所以百度了下参考了这两个资料,进行了简单分析. ******************************************************** ...

  7. Python3 中bytes数据类型深入理解(ASCII码对照表)

    bytes的来源 bytes 是 Python 3.x 新增的类型,在 Python 2.x 中是不存在的. bytes 的意思是"字节",以字节为单位存储数据.而一个字节二进制为 ...

  8. sort将文件的每一行作为一个单位按ASCII码值进行比较

    1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出. [rocrocket@rocrocket progr ...

  9. ASCII码

    ASCII(pronunciation: /ˈæski/ ASS-kee,American Standard Code for Information Interchange,美国信息交换标准代码)是 ...

随机推荐

  1. 前端学习 node 快速入门 系列 —— 报名系统 - [express]

    其他章节请看: 前端学习 node 快速入门 系列 报名系统 - [express] 最简单的报名系统: 只有两个页面 人员信息列表页:展示已报名的人员信息列表.里面有一个报名按钮,点击按钮则会跳转到 ...

  2. VisualGDB_VS2010_开发PHP扩展

    1.新建一个Linux项目

  3. 结对作业-stage_2

    见队友博客:结对编程-stage_2

  4. 零基础学Java,PayPal技术专家手把手带你入门

    在最权威的 TIOBE 编程语言排名榜单上,Java 常年稳居第一,可以说是世界上应用最为广泛的一门语言. 同时,在微服务.云计算.大数据.Android App 开发等领域,Java 也是当之无愧的 ...

  5. Python基础之:struct和格式化字符

    目录 简介 struct中的方法 格式字符串 字节顺序,大小和对齐方式 格式字符 格式数字 格式字符 格式字符串 填充的影响 复杂应用 简介 文件的存储内容有两种方式,一种是二进制,一种是文本的形式. ...

  6. 1W字|40 图|硬核 ES 实战

    前言 上篇我们讲到了 Elasticsearch 全文检索的原理<别只会搜日志了,求你懂点检索原理吧>,通过在本地搭建一套 ES 服务,以多个案例来分析了 ES 的原理以及基础使用.这次我 ...

  7. nmap使用/参数,及绕过防火墙

    nmap是什么? 它是一种一个很强大的扫描工具,端口,版本号,统统都可以给你扫出来 我的IP网段:192.168.1.0 咱们先找一个主机随便玩玩把,反正没有害处,最多被防火墙拦截了 nmap -sP ...

  8. Nginx的进程管理与重载原理

    目录 进程结构图 信号量管理 Linux的信号量管理机制 利用信号量管理Nginx进程 配置文件重载原理 进程结构图 Nginx是多进程结构,多进程结构设计是为了保证Nginx的高可用高可靠,包含: ...

  9. 八戒转世投胎竟然是Java设计模式:桥接模式

    目录 示例 代码实例 桥接模式 定义 意图 主要解决问题 何时使用 优缺点 八戒转世投胎的故事 示例 请开发一个画图程序,可以画各种颜色不同形状的图形,请用面向对象的思 想设计图形 分析: 1.比如有 ...

  10. JMeter发送get请求并分析返回结果

    在实际工作的过程中,我们通常需要模拟接口,来进行接口测试,我们可以通过JMeter.postman等多种工具来进行接口测试,但是工具的如何使用对于我们来说并不是最重要的部分,最重要的是设计接口测试用例 ...