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

于 2012-06-13T15:37:57.703 回答
5

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

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

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

于 2012-06-13T15:39:21.300 回答