5

csvファイルの分離を自動化するプログラムを作っています。csv を読み込んでから、分割コマンドを使用して「行」を配列に割り当てます。その後、配列内の各「セル」を調べて、前に = を置きます。これにより、先行ゼロが失われないためです。これがコードです。

        arLine = line.Split(replace)

        For Each cell As String In arLine
            cell = cell.Replace(",", "")
            cell = String.Format(cellFormat, cell)
        Next

arLine は配列で、replace は区切り文字です。この場合、パイプは重要ではありません。

それが通過すると、arLine は正しいのですが、各セルの値は変化していません。何か考えはありますか? VB.net が新しく、方向性が必要

4

2 に答える 2

8

これで試してください。

arLine = line.Split(replace)          
For x as Integer = 0 To arLine.Lenght - 1             
    arLine(x) = arLine(x).Replace(",", "")             
    arLine(x) = String.Format(cellFormat, arLine(x))         
Next 

For Eachを使用してループし、イテレータによって返される値を変更しようとしていますが、これによりセル変数の新しい文字列が作成されるため、元の配列を参照していません。代わりに、従来のforループを使用して、arLine配列の値を直接更新できます。

于 2012-06-13T15:37:57.703 に答える
5

.NET の文字列は不変です。文字列を変更すると、実際にはまったく新しい文字列が作成されます。

したがって、セルは元の配列要素を参照しなくなります。for代わりに、ループではなくループを試してforeach、変更された値を に戻してarLine(i)ください。

コレクションへの便利なインデックスを作成するのforではなく、ループを使用してください。foreach

于 2012-06-13T15:39:21.300 に答える