• 简单所以不要忽视,关于 和 程序员应了解的实际应用


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

    由于历史原因,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和其他开源标准中都是把 作为换行符。

  • 相关阅读:
    服务器状态码
    QuerySet中添加Extra进行SQL查询
    django配置一个网站建设
    MySQL数据库查询中的特殊命令
    125. Valid Palindrome
    121. Best Time to Buy and Sell Stock
    117. Populating Next Right Pointers in Each Node II
    98. Validate Binary Search Tree
    91. Decode Ways
    90. Subsets II
  • 原文地址:https://www.cnblogs.com/langu/p/4588907.html
Copyright © 2020-2023  润新知