阅文时长 | | 2.83分钟 | 字数统计 | | 1345.2字符 |
『排坑·ASCII码为160的空格(nbsp)』 | |||
编写人 | | SCscHero | 编写时间 | | Wednesday, September 9, 2020 |
文章类型 | | 系列 | 完成度 | | 待完善 |
座右铭 | 每个伟大的事业,都有一个微不足道的开始。Hello World! |
今日在使用JS的split()方法的时候,使用空格做为分隔符,截取一段带有空格的文字,截取失败。调试过程当中,没有发现问题,但确实是"失败"了。
后来通过百度,JS的split()截取空格的坑,一无所得(搜到的文章一样的一篇,可气,写一篇文章发那么多地方..........)。后来尝试了一些格式化的方法,替换方法仍是行不通。最终,打印了一下这个对象,有了眉目。个人这段字符的空格是HTML5代码的" "的这种空格,彷佛和其余空格有所不一样。javascript
因而将这个空格复制出来,再用split()方法截取,结果截取成功。证实:这两个空格确实是不一样的java
咱们都知道,每一个字符都有本身惟一的ASCII码,这两个空格也不例外。下面来看JS的字符与ASCII码互转的方法:编辑器
String.fromCharCode([ASCII码参数,Int类型]);//输入ASCII码,返回字符 [字符,Char类型].charCodeAt();//字符拓展方法,返回ASCII码
看下两种空格的ASCII码分别是多少。测试
结论:不间断空格(No-break thin space,nbsp)是160,普通空格是32。spa
没法自动换行3d
编辑器通常会把自动换行放在空格字符处。可是,有些文本内容在排版时不适合被放在连续的一行行尾与下一行行首。例如:"100 km",就不该该在其中间的那个空格处换行。因此编辑器应该在"100"与"km"之间放置一个"不换行空格",使得"100 km"是不可断开换行的,若是它不适合在行尾的剩余排版空间,就总体排版到下一行行首。调试
--选自《维基百科-机翻》
没法合并空白字符
在SGML、HTML、TEX与LATEX,把连续的空白字符(如空格符、换行符、tab符等)视做一个空格字符。这使得做者能够自由排版其源码而不影响其最终产生的效果。相反,不换行空格在上述语言环境下,不与其它相邻的空白字符合并,这使得做者可用不换行空格安排格式化排版文本的额外的视觉空间效果。例如在HTML,咱们常用 来控制排版,也是利用了它不合并、以及不换行的特色。rest
另外,在许多语言都有的Trim()方法,即去除首尾空格功能。这个方法某些语言只能去除ASCII码为32的普通空格,须要处理的话,最好将空格统一为一种。博主的思路是使用Replace()方法将ASCII码为160的空格全局替换掉,固然也能够另寻良策。博主测试过JS是能够去除的。回头测试一下C#。code
因此说,肉眼看不出差距的空格,实际并非一种字符。之后再使用空格的使用要当心了。有可能"此空格非彼空格"。对象