我正在尝试使用"现有值"替换.csv文件中的值。 +" a"。换句话说,我想追加一个" a"到所有行,一个特定列,但省略标题行。我的代码在文件的底行成功,但我相信我的foreach循环相对于while循环的位置导致了问题。有什么东西明显我错过了吗?如果是这样,我道歉,因为我是初学者。请注意,我知道有一些冗余的代码,我正在清理一次工作。感谢。
public static void ReadReplace()
{
using (StreamReader sr = new StreamReader(@"C:\TestDirectory\Test.csv"))
{
foreach(string test in File.ReadLines(@"C:\TestDirectory\Test.csv"))
{
String line;
while ((line = sr.ReadLine()) != null)
{
string[] parts = line.Split(',');
string serviceId = parts[34].Trim('"');
string appendedServiceId = serviceId + "a";
string text = File.ReadAllText(@"C:\TestDirectory\Test.csv");
text = text.Replace(serviceId, appendedServiceId);
File.WriteAllText(@"C:\TestDirectory\TestUpdated.csv", text);
}
}
}
}
答案 0 :(得分:0)
您正在重新读取源文件,并在每次循环迭代时重写一次。
尽管此处存在其他所有问题,但请将最终的写入调用移出循环。你仍然没有理由两次阅读这个文件,但我会把它留给你。
我还删除了你未经过使用过的"测试"循环。
未测试:
public static void ReadReplace()
{
string text = File.ReadAllText(@"C:\TestDirectory\Test.csv");
using (StreamReader sr = new StreamReader(@"C:\TestDirectory\Test.csv"))
{
String line;
while ((line = sr.ReadLine()) != null)
{
string[] parts = line.Split(',');
string serviceId = parts[34].Trim('"');
string appendedServiceId = serviceId + "a";
text = text.Replace(serviceId, appendedServiceId);
}
}
File.WriteAllText(@"C:\TestDirectory\TestUpdated.csv", text);
}