排坑·ASCII碼爲160的空格(nbsp)

閱文時長 | 2.83分鐘 字數統計 | 1345.2字符
『排坑·ASCII碼爲160的空格(nbsp)』
編寫人 | SCscHero 編寫時間 | Wednesday, September 9, 2020
文章類型 | 系列 完成度 | 待完善
座右銘 每個偉大的事業,都有一個微不足道的開始。Hello World!

1、問題切入                                            完成度:100%

a) 嘗試

今日在使用JS的split()方法的時候,使用空格做爲分隔符,截取一段帶有空格的文字,截取失敗。調試過程當中,沒有發現問題,但確實是"失敗"了。
後來通過百度,JS的split()截取空格的坑,一無所得(搜到的文章一樣的一篇,可氣,寫一篇文章發那麼多地方..........)。後來嘗試了一些格式化的方法,替換方法仍是行不通。最終,打印了一下這個對象,有了眉目。個人這段字符的空格是HTML5代碼的" "的這種空格,彷佛和其餘空格有所不一樣。javascript

b) 解決

因而將這個空格複製出來,再用split()方法截取,結果截取成功。證實:這兩個空格確實是不一樣的java

2、形同而ASCII不一樣                                完成度:100%

a) 獲取ASCII碼

咱們都知道,每一個字符都有本身惟一的ASCII碼,這兩個空格也不例外。下面來看JS的字符與ASCII碼互轉的方法:編輯器

String.fromCharCode([ASCII碼參數,Int類型]);//輸入ASCII碼,返回字符
[字符,Char類型].charCodeAt();//字符拓展方法,返回ASCII碼

看下兩種空格的ASCII碼分別是多少。測試

結論:不間斷空格(No-break thin space,nbsp)是160,普通空格是32。spa

b) 認識不間斷空格

沒法自動換行3d

編輯器通常會把自動換行放在空格字符處。可是,有些文本內容在排版時不適合被放在連續的一行行尾與下一行行首。例如:"100 km",就不該該在其中間的那個空格處換行。因此編輯器應該在"100"與"km"之間放置一個"不換行空格",使得"100 km"是不可斷開換行的,若是它不適合在行尾的剩餘排版空間,就總體排版到下一行行首。調試

--選自《維基百科-機翻》

沒法合併空白字符
在SGML、HTML、TEX與LATEX,把連續的空白字符(如空格符、換行符、tab符等)視做一個空格字符。這使得做者能夠自由排版其源碼而不影響其最終產生的效果。相反,不換行空格在上述語言環境下,不與其它相鄰的空白字符合並,這使得做者可用不換行空格安排格式化排版文本的額外的視覺空間效果。例如在HTML,咱們常用 來控制排版,也是利用了它不合並、以及不換行的特色。rest


c) 在不一樣的設備以及系統上輸入nbsp

3、總結                                                完成度:100%

另外,在許多語言都有的Trim()方法,即去除首尾空格功能。這個方法某些語言只能去除ASCII碼爲32的普通空格,須要處理的話,最好將空格統一爲一種。博主的思路是使用Replace()方法將ASCII碼爲160的空格全局替換掉,固然也能夠另尋良策。博主測試過JS是能夠去除的。回頭測試一下C#。code

因此說,肉眼看不出差距的空格,實際並非一種字符。之後再使用空格的使用要當心了。有可能"此空格非彼空格"。對象


原創博文,未經許可請勿轉載。
若有幫助,歡迎點贊、收藏、關注。若有問題,請評論留言!如需與博主聯繫的,直接博客私信SCscHero便可。