首页 > 解决方案 > C# 不要用逗号分割字符串

问题描述

我正在使用 Xamarin.Forms 创建数据收集应用程序。此应用程序的一个特殊功能是通过 csv 导出数据。捕获后,使用以下方法将数据写入文本文件:

 public void WriteToFile(string CompanyName, string Website, string FirsttName, string LastName, string JobTitle, string Phone, string Email, string Solution, string Notes, string ContactOwner, string EventName)
    {
        string path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
        string filename = System.IO.Path.Combine(path, "Prospects.txt");
        string lineToBeAdded = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10}", CompanyName, Website, FirsttName, LastName, JobTitle, Phone, Email, Solution, Notes, ContactOwner, EventName);
        File.AppendAllText(filename, lineToBeAdded + Environment.NewLine);


    }

我的问题是,在变量 NOTES 中,用户在他们的描述中使用了逗号,这弄乱了 csv 的结构。

如何强制忽略此字符串中的逗号?

标签: c#csvcomma

解决方案


要在双引号中转义逗号扭曲每列,要转义双引号,请使用 2 个双引号而不是每个:

 string lineToBeAdded = string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\",\"{4}\",\"{5}\",\"{6}\",\"{7}\",\"{8}\",\"{9}\",\"{10}\"", 
CompanyName.Replace("\"","\"\""),
 Website.Replace("\"","\"\""),
 FirsttName.Replace("\"","\"\""),
 LastName.Replace("\"","\"\""),
 JobTitle.Replace("\"","\"\""),
 Phone.Replace("\"","\"\""),
 Email.Replace("\"","\"\""),
 Solution.Replace("\"","\"\""),
 Notes.Replace("\"","\"\""),
 ContactOwner.Replace("\"","\"\""),
 EventName.Replace("\"","\"\""));

推荐阅读