Я экспериментировал с базовыми операциями ввода-вывода файлов VB.Net и расщепления строк. Я столкнулся с этой проблемой. Я не знаю, имеет ли это какое-то отношение к разделению файлов или вводу строк.
Я пишу текст в файл примерно так
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()
Теперь я делю fileContents
, используя Environment.NewLine
в качестве разделителя.
Dim tempStr() As String = fileContents.Split(Environment.NewLine)
Когда я печатаю получившийся массив, я получаю странные результаты
For Each str As String In tempStr
Console.WriteLine("*" + str + "*")
Next
Я добавил * s в начало и конец элементов массива во время печати, чтобы узнать, что происходит. Поскольку в качестве разделителя используется 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
.
Таким образом, при разбиении в качестве разделителя используется только символьный эквивалент значения 13 ASCII, который является первым символом NewLine
, как объясняется в ответах, а оставшийся материал все еще присутствует в строках. По какой-то причине загадочное пустое пространство в приведенном выше списке и значение ASCII 10 вместе приводят к печати новой строки.
Теперь понятно. Спасибо за помощь. :)