答案 0 :(得分:2)
很少继续下去,例如配置文件的工作原理以及数据的样子。
请注意,使用{1, 5, 2, 3, 3, 1}
的布局,您不只是重新排序列,这会删除一(4)并复制第1列和第3列。
使用留在from this answer上的一些伪随机数据,将其读入,然后以不同的顺序将其写回。您必须对其进行修改才能考虑配置文件。
示例数据:
Ndxn fegy n,105,Imaypfrtzghkh,-1,red,1501
Mfyze,1301,Kob dlfqcqtkoccxwbd,0,蓝色,704
Xe fnzeifvpha,328,Mnarhrlselxhcyby hq,-1,red,1903
Dim csvFile As String = "C:\Temp\mysqlbatch.csv"
Dim lines = File.ReadAllLines(csvFile)
Dim outFile As String = "C:\Temp\mysqlbatch2.csv"
Dim data As String()
Dim format As String = "{0}, {4}, {1}, {2}, {2}, {0}"
Using fs As New StreamWriter(outFile, False)
For Each s As String In lines
' not the best way to split a CSV,
' no OP data to know if it will work
data = s.Split(","c)
' specifiy the columns to write in
' the order desired
fs.WriteLine(String.Format(format,
data(0),
data(1),
data(2),
data(3),
data(4),
data(5)
)
)
Next
End Using
此方法使用格式字符串和占位符({N}
)来控制订单。占位符和数组元素都是零基础,因此{1, 5, 2, 3, 3, 1}
变为{0, 4, 1, 2, 2, 0}
。您的配置文件内容可能只是这些格式字符串的集合。请注意,您可以拥有比String.Format()
更多的参数,而不是占位符。
输出:
Ndxn fegy n,red,105,Imaypfrtzghkh,Imaypfrtzghkh,Ndxn fegy n
Mfyze,蓝色,1301,Kob dlfqcqtkoccxwbd,Kob dlfqcqtkoccxwbd,Mfyze
Xe fnzeifvpha,红色,328,Mnarhrlselxhcyby hq,Mnarhrlselxhcyby hq,Xe fnzeifvpha
在逗号(s.Split(","c)
)上拆分传入数据在很多情况下都可以使用,但不是全部。如果数据包含逗号(如某些货币“1,23”),则会失败。在这种情况下,分隔符char通常是“;”相反,但由于其他原因(“2016年1月22日”或“花园软管,绿色”),数据可能有公共空间。数据可能必须以不同方式进行拆分。
注意:以前的所有帖子都与vba
相关。标题包含VB.NET
并标记为vb.net,因此这是一个VB.NET答案