如何将csv分隔符从“";至“:";在C#中
本文关键字:quot csv 分隔符 | 更新日期: 2023-09-27 18:30:00
我正在尝试通过读取C#控制台应用程序中的现有CSV文件来生成新的CSV文件。
using (FileStream stream = File.OpenRead("C:''Files''test_input_file.csv"))
using (FileStream writeStream = File.OpenWrite("C:''Files''test_Output_file.csv"))
{
BinaryReader reader = new BinaryReader(stream);
BinaryWriter writer = new BinaryWriter(writeStream);
// create a buffer to hold the bytes
byte[] buffer = new Byte[1024];
int bytesRead;
// while the read method returns bytes
// keep writing them to the output stream
while ((bytesRead = stream.Read(buffer, 0, 1024)) > 0)
{
writeStream.Write(buffer, 0, bytesRead);
}
}
现在我想将输出文件中的分隔符改为":",而不是","
我该怎么做?请帮帮我。
因为您正在尝试修改文本字符,所以BinaryReader不适合您的情况。由于编码问题,您需要使用StreamReader。
using (FileStream stream = File.OpenRead("C:''Files''test_input_file.csv"))
using (FileStream writeStream = File.OpenWrite("C:''Files''test_Output_file.csv"))
{
StreamReader reader = new StreamReader(stream);
StreamWriter writer = new StreamWriter(writeStream, reader.CurrentEncoding);
// create a buffer to hold the chars
char[] buffer = new char[1024];
int charsRead;
// while the read method returns chars
// keep writing them to the output stream
while ((charsRead =
reader.Read(buffer, 0, buffer.Length)) > 0)
{
for (int i = 0; i < charsRead; i++)
{
if (buffer[i] == ':') buffer[i] = ',';
}
writer.Write(buffer, 0, charsRead);
}
}
什么是编码问题?一个字符可以是1、2或3个字节,甚至7个比特等等。这取决于编码。流读取器将为您处理此问题。
假设:
- CSV文件以ASCII或UTF-8编码
- CSV值将不包含任何嵌入的逗号
你可以简单地使用:
for (int i = 0; i < bytesRead; i++)
if (buffer[i] == ',')
buffer[i] = ':';
writeStream.Write(buffer, 0, bytesRead);