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

时间:2012-06-13 15:33:30

标签: vb.net arrays csv

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

        arLine = line.Split(replace)

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

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

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

2 个答案:

答案 0 :(得分: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进行循环并尝试修改迭代器返回的值,但这会为您的单元格var创建一个新字符串,因此您不会引用原始数组。 相反,使用传统的for循环,您可以直接更新arLine数组中的值

答案 1 :(得分:5)

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

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

使用for循环而不是foreach,这样您就可以在集合中找到方便的索引。