我正在尝试基本的VB.Net文件IO和字符串拆分.我遇到了这个问题.我不知道它是否与文件IO或字符串拆分有关.
我正在写文本到这样的文件
Dim sWriter As New StreamWriter("Data.txt") sWriter.WriteLine("FirstItem") sWriter.WriteLine("SecondItem") sWriter.WriteLine("ThirdItem") sWriter.Close()
然后,我正在从文件中读取文本
Dim sReader As New StreamReader("Data.txt") Dim fileContents As String = sReader.ReadToEnd() sReader.Close()
现在,我使用Environment.NewLine作为分隔符来拆分fileContents.
Dim tempStr() As String = fileContents.Split(Environment.NewLine)
当我打印生成的数组时,我得到了一些奇怪的结果
For Each str As String In tempStr Console.WriteLine("*" + str + "*") Next
我在打印过程中将* s添加到Array项的开头和结尾,以了解发生了什么.由于NewLine用作分隔符,我希望Array中的字符串不具有任何NewLine.但输出是这个 –
*FirstItem* * SecondItem* * ThirdItem* * *
不应该是这个 –
*FirstItem* *SecondItem* *ThirdItem* **
??
除了第一个字符串之外,为什么除了第一个字符串之外还有一个新行?
更新:我通过fileContents的字符打印做了一个角色,得到了这个 –
F - 70 i - 105 r - 114 s - 115 t - 116 I - 73 t - 116 e - 101 m - 109 - 13 - 10 S - 83 e - 101 c - 99 o - 111 n - 110 d - 100 I - 73 t - 116 e - 101 m - 109 - 13 - 10 T - 84 h - 104 i - 105 r - 114 d - 100 I - 73 t - 116 e - 101 m - 109 - 13 - 10
似乎’Environment.NewLine’由
- 13 - 10
13和10 ..我明白了.但两者之间的空白?我不知道它是否因为打印到控制台而来,或者真的是NewLine的一部分.
因此,在拆分时,只使用相当于ASCII值13的字符(即NewLine的第一个字符)作为分隔符(如回复中所述),其余内容仍然存在于字符串中.由于某种原因,上面列表中的神秘空白空间和ASCII值10一起导致打印一个新行.
现在很清楚了.谢谢您的帮助.