| 閱文時長 | | 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即可,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/3039.html
標籤:其他
上一篇:計算機軟體檔案編制規范摘要
下一篇:微服務·API檔案
