vbcr,vblf和 vbcrlf之间的区别?

jackson5 2007-06-29 08:19:59
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})

同样结果没什么区别
...全文
7732 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
huisir 2012-09-28
  • 打赏
  • 举报
回复
路过~~~ GOOD
kxyzjm62 2012-09-27
  • 打赏
  • 举报
回复
老问题不是的能翻出来,支持11楼。
music_0000 2012-09-27
  • 打赏
  • 举报
回复
vbLf: 行的开头
vbCr: 行的末尾
vbCrLf: 换行
randygx 2012-09-26
  • 打赏
  • 举报
回复
嗯,学习了
conggang 2012-01-16
  • 打赏
  • 举报
回复
看到回帖是种美德
thinkingxh 2011-07-21
  • 打赏
  • 举报
回复
我觉得11楼讲解的很清楚 受教了 呵呵
thinkingxh 2011-07-21
  • 打赏
  • 举报
回复
我觉得11楼讲解的很清楚 受教了 呵呵
thinkingxh 2011-07-21
  • 打赏
  • 举报
回复
我觉得11楼讲解的很清楚 受教了 呵呵
SP12345678902 2011-06-12
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 cosmo_sei 的回复:]

楼上都已经解释清楚了。
windows平台是vbCrLf
UNIX/Linux系统是vbLf
苹果系统是vbCr

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

就是这样
cosmo_sei 2011-06-09
  • 打赏
  • 举报
回复
楼上都已经解释清楚了。
windows平台是vbCrLf
UNIX/Linux系统是vbLf
苹果系统是vbCr

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

hhddzz 2011-06-09
  • 打赏
  • 举报
回复
就是两个字符和一个字符串啊,根本就没什么联系
字符是字符,程序是程序,程序负责对字符的解析和输出(比如显示)

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

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

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

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

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

还有,这几个字符串也不一定就是用于字符换行
以前更多是用做操作指令
悠悠白鹤 2011-06-09
  • 打赏
  • 举报
回复
学习了.....
haifeng39 2008-10-03
  • 打赏
  • 举报
回复
学习了……
在做网页的时候这两个效果完全不一样。
IWAWWFY 2008-10-01
  • 打赏
  • 举报
回复
学习了。。。。。
tjficcbw 2008-10-01
  • 打赏
  • 举报
回复
你存进数据库后,就有区别了,那时,你替换不一样就替换不成了
palgerrard 2008-09-30
  • 打赏
  • 举报
回复
学到了~~
jackson5 2007-06-30
  • 打赏
  • 举报
回复
还是不明白他们在实际使用中的区别
51Crack 2007-06-29
  • 打赏
  • 举报
回复
学习了
-过客- 2007-06-29
  • 打赏
  • 举报
回复
在DOS时代,这两个字符是有各自的分工。CR使光标回到行首,LF使光标下移一行。

不过在WINDOWS里面,基本只要有CR就可以了,就是说CR兼备了LF的功能。而LF则变得可有可无,只在一些终端界面例如TELNET里面才能起到作用。
BimyuIO 2007-06-29
  • 打赏
  • 举报
回复
回车和换行是两个字符,我记得历史是这样的(记不太清楚了,好像是这样):

在早期的Mac系统下用换行符来实现文字的换行,这是比较正统的做法,而在Unix系统下用回车符代表文字的换行,二者都是不可见字符,Dos出现以后,比尔盖茨为了实现Dos下的文档在Mac和Unix系统下都可读(即都实现换行效果),就采取了用二者的结合来实现换行,这样Dos文档在Mac和Unix下都不会有显示问题。这也是为什么有时候Unix的文本文件到了Win下面就所有文字都在一行里显示了...
加载更多回复(1)
Option Explicit Public g_blIsListSMS As Boolean Public g_blIsSysBusy As Boolean Public g_blIsWaiting As Boolean Public g_blIsNewSMSIn As Boolean Public g_blIsSendingSMS As Boolean Public g_blIsHexCommData As Boolean Public g_blMaySaveAllSMS As Boolean Public g_blwav As Boolean Public g_strSave As String Public g_strThisAT As String Public g_strLastAT As String Public g_strLatestAT As String Public n_CountListSMS As Long Public g_SysInfo As SysStruct Public TheForm As Form Public TheMenu As Menu Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'VB延时API函数 Public Declare Sub winhelp Lib "user32" (ByVal hWnd As Long, ByVal lphelpfile As String, ByVal wcommand As Long, ByVal dwData As Long) '调用帮助API函数 Public Declare Function htmlHelp Lib "hhctrl.ocx" Alias "HtmlHelpA" (ByVal hwndCaller As Long, ByVal pszFile As String, ByVal uCommand As Long, ByVal dwData As Long) As Long Public Const HH_DISPLAY_INDEX = 2 Public Const HH_DISPLAY_TOC = 1 Public Const HH_DISPLAY_TOPIC = 0 Type SysStruct CommPort As Integer Baud As String ServiceNo As String DestNo As String SMSMelody As Integer Clock As Boolean ClockSet As String End Type Type SMSDef ListOrRead As Boolean '是否用列举(List)方法读取 SmsIndex As Long SourceNo As String ReachDate As String ReachTime As String SmsMain As String End Type '功能:解析串口中AT命令返回的信息 '输入参数: 串口数据 '输出参数: 'strATData: 短消息内容(UD) 'iSMSIdx: 短消息序号 'strSMSTime: 短消息接收时间 'strSMSSourceNO:源SIM卡号 'strSMSStatus: 短消息状态:"READ"—已读,"UNREAD"—未读,"SENT"—发送,"UNSENT"—未发送 Public Function GetDataFromCommPort(ByVal strInput As String, strATData As String, Optional CommandStatus As String, Optional TimedOut As Boolean, Optional iSMSIdx As Integer, Optional strSMSTime As String, Optional strSMSSourceNO As String, Optional strSMSStatus As String) As Boolean On Error GoTo ErrorG Dim strTmp As String, strTmp1 As String

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧