简单所以不要忽视,关于\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","").Length
2
sqlParams.ElementAt(1).Value.ToString().Length
4

可以看到,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作为换行符。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数控程序员是机械制造行业中的一种职业,主要负责编写数控机床的加工程序,以及控制数控机床进行加工操作。在实际工作中,数控程序员需要应用CAD/CAM软件来进行相关工作。 CAD/CAM软件是现代机械制造行业中的重要工具,它可以帮助数控程序员进行加工工艺的设计和优化,提高加工效率和质量。具体来说,数控程序员关于CAD/CAM软件的应用主要包括以下几个方面: 1. CAD/CAM软件的基础操作:数控程序员需要学习和掌握CAD/CAM软件的基础操作,包括界面操作、绘图工具、编辑工具等方面的知识。 2. CAD/CAM软件的应用场景:数控程序员需要了解CAD/CAM软件在机械制造行业中的应用场景,包括零件设计、装配设计、工艺规划等方面的知识。 3. CAD/CAM软件的编程:数控程序员需要学习和掌握CAD/CAM软件的编程功能,包括自动编程、手动编程、编程优化等方面的知识。 4. CAD/CAM软件的仿真:数控程序员需要使用CAD/CAM软件进行数控机床加工仿真,包括模拟加工过程、验证加工程序、预测加工效果等方面的知识。 5. CAD/CAM软件的数据管理:数控程序员需要使用CAD/CAM软件进行数据管理,包括零件库管理、工艺库管理、加工程序管理等方面的知识。 以上是数控程序员关于CAD/CAM软件的应用的主要内容,熟练掌握和应用CAD/CAM软件可以提高数控程序员的工作效率和加工质量,也是现代机械制造行业中的重要技能之一。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值