我正在尝试基本的VB.Net文件IO和字符串拆分.我遇到了这个问题.我不知道它是否与文件IO或字符串拆分有关.
我正在写文本到这样的文件
Dim sWriter As New StreamWriter("Data.txt")
sWriter.WriteLine("FirstItem")
sWriter.WriteLine("SecondItem")
sWriter.WriteLine("ThirdItem")
sWriter.Close()
Run Code Online (Sandbox Code Playgroud)
然后,我正在从文件中读取文本
Dim sReader As New StreamReader("Data.txt")
Dim fileContents As String = sReader.ReadToEnd()
sReader.Close()
Run Code Online (Sandbox Code Playgroud)
现在,我正在分裂fileContents使用Environment.NewLine作为分隔符.
Dim tempStr() As String = fileContents.Split(Environment.NewLine)
Run Code Online (Sandbox Code Playgroud)
当我打印生成的数组时,我得到了一些奇怪的结果
For Each str As String In tempStr
Console.WriteLine("*" + str + "*")
Next
Run Code Online (Sandbox Code Playgroud)
我在打印过程中将*s添加到Array项的开头和结尾,以了解发生了什么.由于NewLine用作分隔符,我希望Array中的字符串不具有任何NewLine.但输出是这个 -
*FirstItem*
*
SecondItem*
*
ThirdItem*
*
*
Run Code Online (Sandbox Code Playgroud)
不应该是这个 -
*FirstItem*
*SecondItem*
*ThirdItem*
**
Run Code Online (Sandbox Code Playgroud)
??
除了第一个字符串之外,为什么除了第一个字符串之外还有一个新行?
更新:我通过角色打印做了一个角色fileContents,得到了这个 -
F - 70
i - 105
r …Run Code Online (Sandbox Code Playgroud) 我记得很多年前,当我在学校时,我的一位计算机科学老师告诉我们,最好检查条件的"真实性"或"平等性",而不是"不平等"等负面的东西.
让我详细说明 - 如果可以通过检查表达式是真还是假来编写条件代码,我们应该检查'真实性'.
示例:查明数字是否为奇数 - 可以通过两种方式完成:
if ( num % 2 != 0 )
{
// Number is odd
}
Run Code Online (Sandbox Code Playgroud)
要么
if ( num % 2 == 1 )
{
// Number is odd
}
Run Code Online (Sandbox Code Playgroud)
(请参阅标记的答案以获得更好的示例.)
当我开始编码时,我知道这num % 2 == 0意味着数字是偶数,所以我只是在!那里检查它是否是奇数.但他就像'不要检查不是条件.尽可能检查条件的"真实性"或"平等性".他建议我使用第二段代码.
我不赞成或反对,但我只是想知道 - 它有什么不同?请不要回复'技术上输出将是相同的' - 我们都知道.这是一般的编程实践还是他自己的编程实践,他在向别人讲道?
注意:我没有理由使用C#/ C++样式语法.在VB等中使用运算符时IsNot,我的问题同样适用<>.所以'!'的可读性 运营商只是其中一个问题.不是问题.