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
而不是阅读所有行,你可以使用[Textfieldparser(http://msdn.microsoft。 com/en-us/library/microsoft.visualbasic.fileio.textfieldparser.aspx)在VB.Net。但除此之外,我不知道你是否可以只编辑一个字段而不重写整个文件 – Nicholas
@Nicholas:'TextFieldParser'位于'Microsoft.VisualBasic.FileIO'命名空间内,而我提供的解决方案在每种语言中都是有效的(VB .NET,C#,ASP.NET)。解析该文件太容易需要另一个类来做,你不觉得吗? :) – Marco
@ user825315:你试过我的回答吗?它有用吗? – Marco