我正在制作一个自动分离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并需要指导
答案 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
,这样您就可以在集合中找到方便的索引。