-1

文字列が一致する行 すべての列について、その行の残りの値に変数を割り当てたいと思います。これは、私が間違っていると思う一致を見つけるために私が試みたものです:

Dim intIndex As Integer
For Each Str As String In strColumn(1)
If Str.Contains(strID) Then
intIndex = Str.IndexOf(strID, 0)
End If
Next

一致する行番号を見つけたとしても、各変数にどの行と列を割り当てるかをどのように伝えるのですか?

行のサンプルで、各列は「,」で区切られています: 1234567,03/02/2013,7,2,B,L,ST
これらの行は無制限です

4

1 に答える 1

0

どうぞ - 文字列 (行) の配列が既に (おそらく を含むファイルから) あると仮定するとReadAllLines、次のような方法で正しい方向に進むはずです。

Dim rowFound As Boolean = False
Dim rowNumber As Integer = 0
Dim columns As String()
Dim col1 As String = ""
Dim col2 As String = ""
Dim col3 As String = ""
Dim col4 As String = ""
Dim col5 As String = ""
Dim col6 As String = ""
Dim col7 As String = ""

Do While Not rowFound And rowNumber < rowArray.Length
   columns = rowArray(rowNumber).Split(New Char() {","c)
   If columns(0) = strID Then
       rowFound = True
       col1 = colunns(0)
       col2 = columns(1)
       col3 = columns(2)
       col4 = columns(3)
       col5 = columns(4)
       col6 = columns(5)
       col7 = columns(6)
   Else
       rowNumber = rowNumber + 1
   End If
Loop

注意すべき点:

まず、これをテストしていないため、構文エラーが発生する可能性があります (私は VB.NET よりも多くの C# を使用しています)。

次に、While ループを使用して、探している行が早い段階で見つかった場合にすべての行をチェックする時間を無駄にしないようにしました。フラグ rowFound が true に設定されているか、rowNumber カウントが配列の長さを超えているか等しい場合、While ループは終了します (0 ベースのインデックス配列を想定)。

While ループ内で、各行を分割し、ID をチェックします。一致する場合は、変数に列の値を設定し、rowFound フラグを True に設定して、ループを終了します。一致するものがない場合、rowNumber 変数をインクリメントし、次の行を調べます (ある場合 - ない場合、While ループは終了します)。

String 以外の型で値を保存する場合は、キャストが必要になる場合があります (2 番目の列は DateTime のように見えます)。

とにかく、これは正しい方向に進むはずです。

于 2013-03-20T23:18:38.207 に答える