【发布时间】:2022-01-28 04:11:40
【问题描述】:
我正在开发一个 Unity 应用程序,我有一个包含 6 列和 5000 多行的 csv 文件。文件可能会显着增长。第二列包含“0”或“1”。不需要所有带有“0”的行。
我想读取 CSV 文件并将第二列中没有“0”的每一行写入一个新的 csv 文件,这样我就有一个新的 CSV 文件,其中只有 1 的行。(“1”也不需要在新的 CSV 文件中。)
我尝试了类似的方法,但我删除了不起作用的部分。也许有人有想法。主要是索引 x 和 i 以某种方式关闭。有时它没有读取第一列,但我可能只是对增量感到困惑。
public void UpdateCSV()
{
string[] values = File.ReadAllText(datapath).Split(new char[] { ',' });
StringBuilder ObjStringBuilder = new StringBuilder();
// x as index for second column
int x = 1;
for (int i = 0; i < values.Length; i++)
{
// if column 2 is not 0 it needs to be printed in the new file
if (values[x] != "0")
{
//using ObjStringBuilder.Append() to pass the values of the row that I want to keep
}
}
ObjStringBuilder.ToString().Remove(ObjStringBuilder.Length - 1);
File.WriteAllText("Assets/Datasets/UpdatedCSV.csv", ObjStringBuilder.ToString());
}
【问题讨论】:
-
在发布的代码中,它是在哪里将带有 1 的行“添加”到
ObjStringBuilder?该代码似乎被注释掉了,但是,即使没有注释,它也没有添加任何内容。 -
是的,这就是我在文中写的。我找不到有效的解决方案,所以我在这里发表了评论。最好的解决方案是按照 Poul Bak 的建议使用 ReadAllLines()。