zoukankan      html  css  js  c++  java
  • 简单所以不要忽视,关于 和 程序员应了解的实际应用

    众所周知, 叫回车符, 叫换行符。

    由于历史原因,windows环境下的换行符是 ;(文章最后会稍微解释这个历史原因)

    linux和html等开源或公开标准中的换行符是 .

    记录这篇笔记的原因是:

    textarea中含换行符时,在C#中接收后自动增加了一个 符号。假设这个字段叫Name nvarchar(50),由于自动增加了一个 符号,在前台验证明明通过了,但是保存到库的时候会报错。因为现在的长度是51.

    如果读者有兴趣可以这样测试:

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

    在JS中检测长度得到3,$('#name').val().length===3 is true

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

    由于换行符是不可见字符,可以用replace(/ /g,'').length的方法检测,如在JS中:

    可以看到textarea中没有 符号。

    再看C#中

    sqlParams.ElementAt(1).Value.ToString().Replace("
    ","").Length
    2
    sqlParams.ElementAt(1).Value.ToString().Length
    4

    可以看到,C#中得到的换行符是有 的。

    故会出现我上门说的这个问题。

    解决办法是:

    保存数据之前把 去掉,replace(" ","");

    为什么要这么做?

    即使你不去掉 ,读出来的数据重新显示在textarea中的时候,换行符又变换成了 ,没有 。

    这一切的变化都是操作系统和浏览器的行为。所以在保存数据库之前去掉 是合理的。

    在html中显示只读文本的时候,别忘了html的换行符是<br/>

    所以显示只读文本前还要replace(' ','<br/>')。

    PS:

    windows保留 作为换行符的原因:

    回车键为什么叫回车键,大家有想过没有,字面意思是回去的车子。

    第一台打印机,每一行打印完了之后在打印第二行之前,这个喷墨的玩意儿需要先回到这一行的行首,这叫回车,然后跳到下一行,这才叫换行。 就是回车加换行。反正保留和延续传统,就一直把换行叫做回车换行。只有windows平台下的技术才是这样的,所有linux和其他开源标准中都是把 作为换行符。

  • 相关阅读:
    达梦数据库还原
    达梦数据库备份-Quartz定时任务备份
    达梦数据库备份-手动备份
    Hadoop集群分布式安装
    echarts实现group关系图案例
    U盘安装windows系统
    GC垃圾回收机制
    form表单提交方式实现浏览器导出Excel
    数据分析-信用卡反欺诈模型
    机器学习-SVM
  • 原文地址:https://www.cnblogs.com/langu/p/4588907.html
Copyright © 2011-2022 走看看