#vb.net #ms-access
#vb.net #ms-access
Вопрос:
Что ж, я успешно закодировал свои неформатированные текстовые данные. Я использовал запятую в качестве разделителя, и если я размещаю это здесь, это может помочь таким студентам, как я.
Try
Using Reader As New TextFieldParser(Application.StartupPath amp; "data.txt")
Reader.TextFieldType = FieldType.FixedWidth
Reader.SetFieldWidths(20, 20, 1, 2)
Dim currentRow As String()
While Not Reader.EndOfData
Try
currentRow = Reader.ReadFields()
Dim oWrite As New System.IO.StreamWriter(Application.StartupPath amp; "FormattedData.txt")
For Each newString In currentRow
oWrite.Write(newString amp; ",")
Next
oWrite.WriteLine()
oWrite.Close()
Catch ex As Exception
End Try
End While
End Using
Catch ex As Exception
End Try
Теперь у меня тоже вопрос: как я могу опустить последнюю запятую из выходных данных при импорте в access database?
Ответ №1:
Самый простой способ сделать это (который я нашел) — записать запятую для последней записи на следующем проходе, но не делайте этого в первом цикле:
Dim fFirstEntry As Boolean = True
For Each newString In currentRow
If fFirstEntry Then
fFirstEntry = False
Else
oWrite.Write(",")
End If
oWrite.Write(newString)
Next
Комментарии:
1. Большое вам спасибо. Ваша помощь в коде подобна ножу в масле. Еще раз спасибо
Ответ №2:
Dim sb As New StringBuilder()
For Each newString In currentRow
sb.Append(newString).Append(",")
Next
sb.Length -= 1
oWrite.Write(sb.ToString())
Обратите внимание, что StringBuilder более эффективен, чем прямое управление строками. Последнее генерирует много мусора в куче, который позже должен быть собран сборщиком мусора.