我使用Microsoft.VisualBasic.FileIO.TextFieldParser
來讀取一個csv文件,編輯它,然後解析它。解析csv文件時如何保留引號?
問題是引號解析後沒有保留。
我試過使用parser.HasFieldsEnclosedInQuotes = true;
,但由於某種原因,它似乎沒有保留引號。
當一個字段包含例如報價本期遊:
"some, field"
之前之後
some, field
由於兩個不同的領域
這裏是我的方法
public static void CleanStaffFile()
{
String path = @"C:\file.csv";
String dpath = String.Format(@"C:\file_{0}.csv",DateTime.Now.ToString("MMddyyHHmmss"));
List<String> lines = new List<String>();
if (File.Exists(path))
{
using (TextFieldParser parser = new TextFieldParser(path))
{
parser.HasFieldsEnclosedInQuotes = true;
parser.Delimiters = new string[] { "," };
while (!parser.EndOfData)
{
string[] parts = parser.ReadFields();
if (parts == null)
{
break;
}
if ((parts[12] != "") && (parts[12] != "*,116"))
{
parts[12] = parts[12].Substring(0, 3);
}
else
{
parts[12] = "0";
}
lines.Add(string.Join(",", parts));
}
}
using (StreamWriter writer = new StreamWriter(dpath, false))
{
foreach (String line in lines)
writer.WriteLine(line);
}
}
MessageBox.Show("CSV file successfully processed :\n");
}
如果現場有資格在引號它將該字段作爲一個數據項。如果數據中的引號部分需要使用不同的文本限定符。 – Romoku
[這些問題](http:// stackoverflow)有[很多](http://stackoverflow.com/questions/5865747/parsing-csv-file-enclosed-with-quotes-in-c-sharp)。 com/questions/4000415/parsing-csv-file-with-commas-and-quotes-as-deliminators-pin) – Jonesopolis
所以你想在引用後修改它'string.Join(「,」,parts) '?然後很容易,因爲只有包含分隔符的字段才被引號包裹。只需在'String.Join'前添加它們即可。 –