Разделение CSV Visual Basic - PullRequest
       15

Разделение CSV Visual Basic

0 голосов
/ 03 декабря 2011

У меня есть строка типа

 Query_1,ab563372363_C/R,100.00,249,0,0,1,249,1,249,1e-132, 460
 Query_1,ab563372356_C/R,99.60,249,1,0,1,249,1,249,5e-131, 455

в файле в две отдельные строки.Я читаю это из текстового поля.Я должен вывести ab563372363_C / R и ab563372356_C / R в текстовом поле.Я пытаюсь использовать функцию разделения для этого, но она не работает ..

Dim splitString as Array
results = "test.txt"
Dim FileText As String = IO.File.ReadAllText(results)  'reads the above contents from file
splitString = Split(FileText, ",", 14)
TextBox2.text = splitString(1) & splitString(13)

для приведенного выше кода, он просто печатает все это .. Что не так?

Ответы [ 2 ]

2 голосов
/ 03 декабря 2011

Попробуйте это

Private Function GetRequiredText() As List(Of String)
    Dim requiredStringList As New List(Of String)
    Dim file = "test.txt"
    If FileIO.FileSystem.FileExists(file) Then

        Dim reader As System.IO.StreamReader = System.IO.File.OpenText(file)
        Dim line As String = reader.ReadLine()
        While line IsNot Nothing
            requiredStringList.Add(line.Split(",")(1))
            line = reader.ReadLine()
        End While

        reader.Close()
        reader.Dispose()
    End If
    Return requiredStringList
End Function

Это будет считывать файл построчно и добавлять нужный элемент в список строк, которые будут возвращены функцией.

Возвращение списка (строки) может быть излишним, но это довольно просто иллюстрировать и работать с ним.

Затем вы можете перебирать список и делать то, что вам нужно, с содержимым списка.

Комментарии приветствуются !!

Также это может сработать ...

Dim query = From lines In System.IO.File.ReadAllLines(file) _
                    Select lines.Split(",")(1)

это вернет IEnumerable (Of String)

Наслаждайтесь

1 голос
/ 03 декабря 2011

Первый

Поскольку вы читаете весь текст, ваш FileText заканчивается следующим образом:

Query_1,ab563372363_C/R,100.00,249,0,0,1,249,1,249,1e-132,460
\r\n
Query_1,ab563372356_C/R,99.60,249,1,0,1,249,1,249,5e-131, 455

Так что, когда вы ссылаетесь на свой splitString с этими индексами( 1 , 13 ) ваш результат может быть неправильным.

Второй

Попробуйте указать тип вашего массива, Dim splitString as Array должно быть Dim splitString As String()

Третий

Сделать ваш код более читабельным / поддерживаемым и легко редактируемым (не только для вас, но и для других)

Код

Private const FirstIndex = 1
Private const SecondIndex = 12

Sub Main
    Dim myDelimiter As Char

    Dim myString As String
    Dim mySplit As String()

    Dim myResult1 As String
    Dim myResult2 As String

    myDelimiter = ","

    myString += "Query_1,ab563372363_C/R,100.00,249,0,0,1,249,1,249,1e-132, 460"
    myString += "Query_1,ab563372356_C/R,99.60,249,1,0,1,249,1,249,5e-131, 455"

    mySplit = myString.Split(myDelimiter)

    myResult1 = mySplit(FirstIndex)
    myResult2 = mySplit(SecondIndex)

    Console.WriteLine(myResult1)
    Console.WriteLine(myResult2)
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...