【发布时间】:2019-03-28 13:04:05
【问题描述】:
我在 csv 中有一些数据,例如
string[][] items = new string[][] {
new string[] { "dog", "3" },
new string[] { "cat", "2" },
new string[] { "bird", "1" }
};
现在我想将输入转换为格式正确的 CSV 行并返回它们 - 预期输出:
string[] csvLines = {"\"dog\";\"3\"", "\"cat\";\"2\"", "\"bird\";\"1\""};
或文件:
"dog";"3"
"cat";"2"
"bird";"1"
我尝试过的:
public static IEnumerable<string> GetCSVLines(string[][] list)
{
using (MemoryStream stream = new MemoryStream())
using (StreamWriter writer = new StreamWriter(stream))
using (CsvHelper.CsvWriter csv = new CsvHelper.CsvWriter(writer))
{
foreach (var item in list)
{
foreach (var field in item)
{
csv.WriteField(field);
}
yield return csv.Record; //??
csv.NextRecord();
}
}
}
注意:我不能只使用string.Join(),因为这些字段可能包含"、分隔符; 或换行符。
【问题讨论】:
-
这与 CsvHelper 有什么关系?一个简单的
Select和String.Format将产生输出 -
您希望输出包含转义的双引号?
-
你的 items 数组清晰吗?
-
为什么不直接写
list.Select(pair=>String.Format("\"{0}\";\"{1}\"",pair[0],pair[1])).ToArray()? -
@Toshi 你必须解释你想要做什么,否则这个问题将因为不清楚而被关闭。我怀疑您想将输入转换为格式正确的 CSV 行并返回它们。但这不是问题所要问的,“期望的输出”与 CSV 行无关