-1

我在 CSV 文件中有两列,我需要将每一列存储在一个单独的数组中。

Name,AvalibilityAsBoolean
---------------------------
Vagarth Gaurav,True
Dhananjay Menon,False

我想要一个数组作为名称,另一个数组作为可用性作为布尔值存储,类似于下面。

Name(0) = "Vagarth Gaurav"
Name(1) = "Dhananjay Menon"
Available(0) = True
Available(1) = False

唯一的问题是读取 CSV 并将字符串和布尔值存储到正确的数组中。

请帮忙,我是VB的新手。我正在使用 Visual Basic 2010

4

2 回答 2

2

我敢肯定这个问题之前已经被问过,但这应该会有所帮助。利用TextFieldParser 类为您进行解析很容易。此代码示例中也显示了用于管理这两个数组的代码。

    Dim arrName() As String
    Dim arrValue() As String

    Using ioReader As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\test\test.csv")

        ioReader.TextFieldType = FileIO.FieldType.Delimited
        ioReader.SetDelimiters(",")

        While Not ioReader.EndOfData

            Dim arrCurrentRow As String() = ioReader.ReadFields()

            If arrName Is Nothing Then

                ReDim Preserve arrName(0)
                ReDim Preserve arrValue(0)

                arrName(0) = arrCurrentRow(0)
                arrValue(0) = arrCurrentRow(1)

            Else

                ReDim Preserve arrName(arrName.Length)
                ReDim Preserve arrValue(arrValue.Length)

                arrName((arrName.Length - 1)) = arrCurrentRow(0)
                arrValue((arrValue.Length - 1)) = arrCurrentRow(1)

            End If

        End While
于 2013-02-08T02:52:51.813 回答
1
Dim sData() As String
Dim arrName, arrValue as New List(Of String)()

Using sr As New StreamReader(sFile)
    While Not sr.EndOfStream
        sData = sr.ReadLine().Split(","c)

        arrName.Add(sData(0).Trim())
        arrValue.Add(sData(1).Trim())
    End While
End Using

您可能希望将您的值存储为Boolean(available, notAvailable)。您可以执行以下操作:

Dim arrValue As New List(Of Boolean)()
...

    arrValue.Add(Not sData(1).Trim().ToUpper().StartsWith("NOT"))
于 2013-02-08T07:10:38.347 回答