为什么 'New Line' 需要两个字符?
Why 'New Line' takes two characters?
我制作了一个 .txt 文件 (UTF-8) 并将以下文本放入其中:
123
456
789
然后我尝试使用 InStr()
函数找出字符“4”的位置。没想到结果是6,我用'3'这个字符试了一下,结果是3。所以,3和4之间一定有两个字符。
然后我尝试了 InStr(TextBox1.Text, Chr(13))
,结果是 4。
好的。 "New Line" 有一个字符位于第 4 个位置。如果是,那么第 5 个字符是什么?
用于换行符的实际字符因平台而异。一些系统使用字符 13
来表示换行,一些使用 10
,还有一些,如 Windows,两者都使用。
从技术上讲,字符 13
应该表示一个回车 return(return 打印机的打印头在页面的左侧),这就是它经常被引用的原因为 CR
。请记住,在计算的早期,打印机被用作终端而不是视频屏幕。因此,视频终端上最接近 CR
的等效项是光标 return 到当前行的开头,但不会前进到下一行。
字符10
表示换行(LF
),意思是将纸张前进(即进纸)一行,以便打印头准备打印下一行。与视频终端上的换行最接近的是将光标向下移动到下一行,但将其保持在相同的 x 位置。
所以,考虑到这两件事,如果你想在下一行的开头开始打字,你需要做这两件事。您需要前进到页面的下一行并且 return 到行的开头,因此 CRLF
,两个字符。
据推测,一些系统设计者认为每个换行使用两个字符太浪费了,因为带有视频显示器的计算机很少需要添加的细微差别,所以他们选择只使用其中一个 CR
或 LF
。由于使用的正确编码因平台而异,因此最好在 .NET 中使用 Environment.NewLine
以获得适合当前系统的编码。
例如,当您 运行 在 windows 上使用此控制台应用程序时:
Public Sub Main()
Console.Write("123" & vbCr)
Console.Write("4" & vbCr)
End Sub
输出为:
423
回车-return只是让光标回到了行首。它并没有导致它向下移动到下一行,所以 4 在打印时会覆盖 1。
我制作了一个 .txt 文件 (UTF-8) 并将以下文本放入其中:
123
456
789
然后我尝试使用 InStr()
函数找出字符“4”的位置。没想到结果是6,我用'3'这个字符试了一下,结果是3。所以,3和4之间一定有两个字符。
然后我尝试了 InStr(TextBox1.Text, Chr(13))
,结果是 4。
好的。 "New Line" 有一个字符位于第 4 个位置。如果是,那么第 5 个字符是什么?
用于换行符的实际字符因平台而异。一些系统使用字符 13
来表示换行,一些使用 10
,还有一些,如 Windows,两者都使用。
从技术上讲,字符 13
应该表示一个回车 return(return 打印机的打印头在页面的左侧),这就是它经常被引用的原因为 CR
。请记住,在计算的早期,打印机被用作终端而不是视频屏幕。因此,视频终端上最接近 CR
的等效项是光标 return 到当前行的开头,但不会前进到下一行。
字符10
表示换行(LF
),意思是将纸张前进(即进纸)一行,以便打印头准备打印下一行。与视频终端上的换行最接近的是将光标向下移动到下一行,但将其保持在相同的 x 位置。
所以,考虑到这两件事,如果你想在下一行的开头开始打字,你需要做这两件事。您需要前进到页面的下一行并且 return 到行的开头,因此 CRLF
,两个字符。
据推测,一些系统设计者认为每个换行使用两个字符太浪费了,因为带有视频显示器的计算机很少需要添加的细微差别,所以他们选择只使用其中一个 CR
或 LF
。由于使用的正确编码因平台而异,因此最好在 .NET 中使用 Environment.NewLine
以获得适合当前系统的编码。
例如,当您 运行 在 windows 上使用此控制台应用程序时:
Public Sub Main()
Console.Write("123" & vbCr)
Console.Write("4" & vbCr)
End Sub
输出为:
423
回车-return只是让光标回到了行首。它并没有导致它向下移动到下一行,所以 4 在打印时会覆盖 1。