国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

簡單所以不要忽視,關于/r/n和/n程序員應了解的實際應用

2019-11-17 02:18:38
字體:
來源:轉載
供稿:網友

簡單所以不要忽視,關于/r/n和/n程序員應了解的實際應用

眾所周知,/r叫回車符,/n叫換行符。

由于歷史原因,windows環境下的換行符是/r/n;(文章最后會稍微解釋這個歷史原因)

linux和html等開源或公開標準中的換行符是/n.

記錄這篇筆記的原因是:

textarea中含換行符時,在C#中接收后自動增加了一個/r符號。假設這個字段叫Name nvarchar(50),由于自動增加了一個/r符號,在前臺驗證明明通過了,但是保存到庫的時候會報錯。因為現在的長度是51.

如果讀者有興趣可以這樣測試:

在<textarea id="name"></textarea>中輸入字符1,然后回車,然后輸入2

在JS中檢測長度得到3,$('#name').val().length===3 is true

在C#中得到長度是4,name.length==4 is true

由于換行符是不可見字符,可以用replace(//n/g,'').length的方法檢測,如在JS中:

可以看到textarea中沒有/r符號。

再看C#中

sqlParams.ElementAt(1).Value.ToString().Replace("/r/n","").Length2sqlParams.ElementAt(1).Value.ToString().Length4

可以看到,C#中得到的換行符是有/r的。

故會出現我上門說的這個問題。

解決辦法是:

保存數據之前把/r去掉,replace("/r","");

為什么要這么做?

即使你不去掉/r,讀出來的數據重新顯示在textarea中的時候,換行符又變換成了/n,沒有/r。

這一切的變化都是操作系統和瀏覽器的行為。所以在保存數據庫之前去掉/r是合理的。

在html中顯示只讀文本的時候,別忘了html的換行符是<br/>

所以顯示只讀文本前還要replace('/n','<br/>')。

PS:

windows保留/r/n作為換行符的原因:

回車鍵為什么叫回車鍵,大家有想過沒有,字面意思是回去的車子。

第一臺打印機,每一行打印完了之后在打印第二行之前,這個噴墨的玩意兒需要先回到這一行的行首,這叫回車,然后跳到下一行,這才叫換行。/r/n就是回車加換行。反正保留和延續傳統,就一直把換行叫做回車換行。只有windows平臺下的技術才是這樣的,所有linux和其他開源標準中都是把/n作為換行符。


上一篇:14反射程序集

下一篇:C#獲取硬件信息

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肇东市| 青田县| 屏东县| 利辛县| 黑龙江省| 许昌县| 兴隆县| 新建县| 普格县| 托克托县| 江津市| 探索| 容城县| 密山市| 汉寿县| 岱山县| 涿州市| 清新县| 调兵山市| 天镇县| 遂溪县| 遂昌县| 仪陇县| 德江县| 棋牌| 碌曲县| 故城县| 花莲市| 贵定县| 克拉玛依市| 玉树县| 莱阳市| 广宁县| 兴安盟| 金川县| 萍乡市| 琼海市| 白银市| 铜鼓县| 浦县| 丹阳市|