Visual Basic 中学校 掲示板 投稿内容
タグのない投稿を抽出 統計 RSS

Visual Basic 中学校 > 投稿一覧 >

配列、array関数について

テキストファイル 文字列解析 タグの編集...

投稿者 烏龍茶   ()   投稿日時 2020/2/9 01:25:23
はじめまして、烏龍茶と申します。
よろしくお願いします。

別ファイルにて
a(1) = Array("1","2","3","4,"5")
a(2) = Array("6","7","8","9","10")

a(〇) = Array("96","97","98","99","100")
といった配列のデータがあります。

Visual Studioにて、このファイルを読み込んでDataGridViewにて以下のように表示がしたいです。
[1つ目の数字] [2つ目の数字] [3つ目の数字] [4つ目の数字] [5つ目の数字]
1                    2                    3                    4                    5
6                    7                    8                    9                    10

96                  97                   98                  99                   100

読み込むことはできたのですが、「a(1) = Array("1","2","3","4,"5")」というような文字列?データ?
となってしまうため、配列として扱うことができず表示させることができません。

dim aaa() as string = {"1","2","3","4","5"}
というような形に書き換えなければいけないのでしょうか?
下手くそな質問ですいません。
宜しくお願いします

投稿者 (削除されました)   ()   投稿日時 2020/2/9 14:49:21
(削除されました)

投稿者 魔界の仮面弁士   (社会人)   投稿日時 2020/2/9 16:26:21
> 別ファイルにて
> a(1) = Array("1","2","3","4,"5")
> a(2) = Array("6","7","8","9","10")
> ~
> a(〇) = Array("96","97","98","99","100")
> といった配列のデータがあります。

データを保持するための外部ファイルなら、CSV ファイル等で良いのでは?

わざわざ Array 何某といった記述を加える必要は無いと思うのですが、
ひとまず上記が、 D:\TEMP\TEST.TXT というテキストファイルとして
保存されているなら、下記のようにして読み込むことができます。

※やり方は色々あると思いますが、一例として。

Option Strict On
Imports System.Data
Imports System.IO
Imports System.Text

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        DataGridView1.DataSource = ReadFromDataFile("D:\TEMP\TEST.TXT")
    End Sub

    Private Function ReadFromDataFile(dataFile As StringAs DataTable
        Dim tbl As New DataTable("Array")
        For Each line In File.ReadLines(dataFile, Encoding.GetEncoding("Shift_JIS"))
            Dim values(-1) As Object
            Try
                Dim separate = Split(line, ") = Array(", 2, CompareMethod.Text)
                Dim body = separate.Last().TrimEnd(" )".ToCharArray())
                Dim fields As String() = body.Split(","c)
                values = fields.Select(AddressOf ToInt).ToArray()
                For f = tbl.Columns.Count + 1 To values.Length
                    tbl.Columns.Add("Col" & CStr(f), GetType(Integer))
                Next
            Catch
            Finally
                tbl.Rows.Add(values)
            End Try
        Next
        Return tbl
    End Function

    Private Function ToInt(s As StringAs Object
        Dim i As Integer
        If Integer.TryParse(s.Replace(""""c, ""), i) Then
            Return i
        Else
            Return DBNull.Value
        End If
    End Function
End Class


投稿者 烏龍茶   (社会人)   投稿日時 2020/2/9 21:07:14
魔界の仮面弁士様

いただいたサンプルを参考から、答えにたどり着くことができました!
ご返答ありがとうございました。