gpt4 book ai didi

vb.net - 文件 IO 问题和在 VB.Net 中使用 Environment.NewLine 拆分字符串

转载 作者:行者123 更新时间:2023-12-04 14:20:37 24 4
gpt4 key购买 nike

我正在试验基本的 VB.Net 文件 IO 和字符串拆分。我遇到了这个问题。不知道是不是跟File IO或者String splitting有关系。

我正在像这样将文本写入文件

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()

现在,我正在 split fileContents使用 Environment.NewLine作为分隔符。
Dim tempStr() As String = fileContents.Split(Environment.NewLine)

当我打印结果数组时,我得到了一些奇怪的结果
For Each str As String In tempStr
Console.WriteLine("*" + str + "*")
Next

我在打印期间将 *s 添加到 Array 项目的开头和结尾,以了解发生了什么。自 NewLine用作分隔符,我希望数组中的字符串没有任何 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 一起导致打印新行。

现在很清楚了。谢谢您的帮助。 :)

最佳答案

首先,是的,WriteLine在字符串末尾添加换行符,因此末尾是空行。

问题是你打电话的方式 fileContents.Split() .该函数的唯一版本只接受一个参数,接受 char() ,不是 string . Environment.NewLine是一个字符串,而不是 char ,因此(假设您有 Option Strict Off )当您调用该函数时,它会将其隐式转换为 char , 仅使用字符串中的第一个字符。这意味着不是在组成 Environment.NewLine 的两个字符的实际序列上拆分字符串,它实际上只在这些字符中的第一个上拆分。

要获得所需的输出,您需要像这样调用它:

Dim delims() as String = { Environment.NewLine }
Dim tempStr() As String = fileContents.Split(delims, _
StringSplitOptions.RemoveEmptyEntries)

这将导致它在实际字符串上拆分,而不是像现在那样拆分第一个字符,并且会从结果中删除任何空白条目。

关于vb.net - 文件 IO 问题和在 VB.Net 中使用 Environment.NewLine 拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2613733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com