vb.net修改CSV文件中的列

问题描述:

我有一个CSV文件,其中有许多行需要使用VB.NET更新/替换第四列的值。列上没有标题,因此循环可以从第一行开始。vb.net修改CSV文件中的列

infile.csv
“值1”, “值2”, “值3”, “值4”

多少谷歌搜索后,有很多例子就如何读取和写入的CSV文件,但没有什么是需要的。我知道有多种方法可以完成这个任务,但是需要使用VB.NET完成。任何帮助将不胜感激。从马可的C#的答案

Private Sub CSVmod(ByVal strFileName As String, ByVal newFileName As String) 

    Dim strLines As String() = File.ReadAllLines(strFileName) 
    Dim strList As New List(Of String) 
    Dim strReplace As String = "test" 

    For Each line In strLines 
     Dim strValues As String() = line.Split(",") 
     If (strValues.Length = 14) Then 
      strValues(3) = strReplace 

      strList.Add(String.Join(",", strValues)) 
     End If 

    Next 

    File.WriteAllLines(newFileName, strList.ToArray()) 

我很抱歉,但我只能在C#写移植


最终代码。
我认为你不会找到许多问题转换为VB.NET。
这里是我的代码:

private void SubstFile(string filename, string newFileName) 
{ 
    // Reading all rows of the file 
    string[] lines = File.ReadAllLines(filename); 

    List<string> list = new List<string>(); 
    foreach (string line in lines) 
    { 
     // For every row I split it with commas 
     string[] values = line.Split(','); 
     // Check to have 4 values 
     if (values.Length == 4) 
     { 
      // Substitute fourth value 
      values[3] = "new value"; 
      // Add modified row to list 
      list.Add(String.Join(",", values)); 
     } 
    } 
    // Save list to new file 
    File.WriteAllLines(newFileName, list.ToArray()); 
} 

VB.NET版本:

Private Sub SubstFile(filename As String, newFileName As String) 
    ' Reading all rows of the file 
    Dim lines As String() = File.ReadAllLines(filename) 

    Dim list As List(Of String) = New List(Of String)() 
    For Each line As String In lines 
     ' For every row I split it with commas 
     Dim values As String() = line.Split(","c) 
     ' Check to have 4 values 
     If values.Length = 4 Then   
      ' Substitute fourth value 
      values(3) = "new value" 
      ' Add modified row to list 
      list.Add(String.Join(",", values)) 
     End If 
    Next 
    ' Save list to new file 
    File.WriteAllLines(newFileName, list.ToArray()) 
End Sub 
+0

而不是阅读所有行,你可以使用[Textfieldparser(http://msdn.microsoft。 com/en-us/library/microsoft.visualbasic.fileio.textfieldparser.aspx)在VB.Net。但除此之外,我不知道你是否可以只编辑一个字段而不重写整个文件 – Nicholas

+0

@Nicholas:'TextFieldParser'位于'Microsoft.VisualBasic.FileIO'命名空间内,而我提供的解决方案在每种语言中都是有效的(VB .NET,C#,ASP.NET)。解析该文件太容易需要另一个类来做,你不觉得吗? :) – Marco

+0

@ user825315:你试过我的回答吗?它有用吗? – Marco