通过foreach语句VB.net更改数组的值

Coo*_*son 5 vb.net csv arrays

我正在制作一个自动分离csv文件的程序.我们通过读取csv然后使用split命令将"line"分配给数组.之后我们遍历数组中的每个"单元格"并在前面放置一个=因为这会导致前导零不会丢失.这是代码.

        arLine = line.Split(replace)

        For Each cell As String In arLine
            cell = cell.Replace(",", "")
            cell = String.Format(cellFormat, cell)
        Next
Run Code Online (Sandbox Code Playgroud)

arLine是数组,替换是分隔符,在这种情况下是一个不重要的管道.

当它通过时,arLine是正确的,但每个单元格中的值都没有变化,有什么想法吗?更新到VB.net并需要方向

Ste*_*eve 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 
Run Code Online (Sandbox Code Playgroud)

您正在使用For Each进行循环并尝试修改迭代器返回的值,但这会为您的单元格var创建一个新字符串,因此您不会引用原始数组.相反,使用传统的for循环,您可以直接更新arLine数组中的值


Eri*_* J. 5

.NET中的字符串是不可变的.修改字符串时,实际上是创建一个全新的字符串.

因此,单元格不再引用原始数组元素.相反,尝试for循环而不是foreach循环并将修改后的值分配回来arLine(i).

使用for循环而不是foreach使您有一个方便的索引到集合中.