当前位置:编程学习 > C#/ASP.NET >>

vbcr,vblf和 vbcrlf之间的区别?

vbcr,vblf和 vbcrlf之间的区别?


MSDN上说:
vbCrLf 
Chr(13) + Chr(10)
回车/换行组合符。

vbCr 
Chr(13)
回车符。

vbLf 
Chr(10)
换行符。


但是他们下面的代码的实际效果都是一样的,那请问到底有什么的区别?

MsgBox(vbCrLf & "a")

MsgBox(vbCr & "a")

MsgBox(vbLf & "a")
======================
再例如:
dim a as string = "1 23 456 789"
dim b() as string = a.split(new char(){vbcr})
dim b() as string = a.split(new char(){vblf})

同样结果没什么区别 --------------------编程问答-------------------- 试试
dim a as string = "1" & vbcr & vblf & "23" & vbcr & vblf & "456" & vbcr & vblf & "789"
dim b() as string = a.split(new char(){vbcr})
dim c() as string = a.split(new char(){vblf})
dim d() as string = a.split(new char(){vbcr,vblf})
dim e() as string =split(a,vbcrlf)
仔细分析分割之后的字符串数组,比如长度,子串的每个字符等等,就可以发现不同之处


--------------------编程问答-------------------- 回车和换行是两个字符,我记得历史是这样的(记不太清楚了,好像是这样):

在早期的Mac系统下用换行符来实现文字的换行,这是比较正统的做法,而在Unix系统下用回车符代表文字的换行,二者都是不可见字符,Dos出现以后,比尔盖茨为了实现Dos下的文档在Mac和Unix系统下都可读(即都实现换行效果),就采取了用二者的结合来实现换行,这样Dos文档在Mac和Unix下都不会有显示问题。这也是为什么有时候Unix的文本文件到了Win下面就所有文字都在一行里显示了... --------------------编程问答-------------------- 在DOS时代,这两个字符是有各自的分工。CR使光标回到行首,LF使光标下移一行。   
    
不过在WINDOWS里面,基本只要有CR就可以了,就是说CR兼备了LF的功能。而LF则变得可有可无,只在一些终端界面例如TELNET里面才能起到作用。   
--------------------编程问答-------------------- 学习了 --------------------编程问答-------------------- 还是不明白他们在实际使用中的区别 --------------------编程问答-------------------- 学到了~~ --------------------编程问答-------------------- 你存进数据库后,就有区别了,那时,你替换不一样就替换不成了
--------------------编程问答-------------------- 学习了。。。。。 --------------------编程问答-------------------- 学习了……
在做网页的时候这两个效果完全不一样。 --------------------编程问答-------------------- 学习了..... --------------------编程问答-------------------- 就是两个字符和一个字符串啊,根本就没什么联系
字符是字符,程序是程序,程序负责对字符的解析和输出(比如显示)

我们常说这三个字符(串)是“换行符”,有两层含义:
一是程序遇到这三个字符串时会换行
二是用户进行换行时,程序会在文件中插入某个字符来记录这一操作,一边日后显示时还原
那么究竟程序遇到哪些字符会换行显示,用户在编辑器中换行时会在文档中插入哪个字符
这些,是由应用程序本身来决定的
或许它非怪异,根本就不使用这三个字符串中的任何一个,而使用其他的某些字符串

没有规矩不能成方圆,如果所有程序都我行我素,那大家交流起来就非常困难
你家程序生成的文件别的编辑器打开排版就全乱套了;你也无易做图确显示其他程序处理过的文件。
所以不同的平台对于“换行符”都有一种约定
windows平台是vbCrLf
UNIX/Linux系统是vbLf
苹果系统是vbCr

“windows平台是vbCrLf”
这并不是说Windows下的程序遇到vbCr或者vbLf就一定无易做图常显示。有的程序不能正常显示,比如记事本,它会显示一个小黑框告诉你它无法显示这个字符;有些程序遇到vbCr或者vbLf也知道换行,比如winform中的Label和MsgBox——这要看程序设计者对这个问题是怎么处理的。至于当用于在编辑器中换行时插入什么字符,那一般都是vbCrLf。(有些程序允许用户自己选择)
其他平台同理

总之,这三个就是三个字符(串),怎么处理那是由程序决定的。

当然,了解常用程序、控件对这三个字符串的处理方法是很有必要的。
比如RichTextbox,它在显示字符串时,这三个都可以按预期显示为换行效果;但是RichTextbox使用vbLf来记录换行操作。如果你直接在文本文件中保存RichTextBox.Text属性的值,那么,记事本打开这个文件后所有换行的地方没有换行,而是有一个小黑框,因为记事本它就只在遇到vbCrLf时换行。

还有,这几个字符串也不一定就是用于字符换行
以前更多是用做操作指令 --------------------编程问答-------------------- 楼上都已经解释清楚了。
windows平台是vbCrLf
UNIX/Linux系统是vbLf
苹果系统是vbCr

虽然基本不跨平台,但是,我们留一点点“跨平台”的可能性,用
Environment.NewLine 
代替这些字符。
Environment.NewLine根据所在的环境判断,比如程序运行在Linux的Mono下,就自动取值vbLf

--------------------编程问答--------------------
引用 12 楼 cosmo_sei 的回复:
楼上都已经解释清楚了。
windows平台是vbCrLf
UNIX/Linux系统是vbLf
苹果系统是vbCr

虽然基本不跨平台,但是,我们留一点点“跨平台”的可能性,用
Environment.NewLine 
代替这些字符。
Environment.NewLine根据所在的环境判断,比如程序运行在Linux的Mono下,就自动取值vbLf


就是这样 --------------------编程问答-------------------- 我觉得11楼讲解的很清楚 受教了 呵呵  --------------------编程问答-------------------- 我觉得11楼讲解的很清楚 受教了 呵呵  --------------------编程问答-------------------- 我觉得11楼讲解的很清楚 受教了 呵呵  --------------------编程问答-------------------- 看到回帖是种美德 --------------------编程问答-------------------- 嗯,学习了 --------------------编程问答-------------------- vbLf: 行的开头
vbCr: 行的末尾
vbCrLf: 换行
--------------------编程问答-------------------- 老问题不是的能翻出来,支持11楼。 --------------------编程问答-------------------- 路过~~~ GOOD
补充:.NET技术 ,  VB.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,