2

所以假设我有一个字符串输入到这样设置的 Excel 文档中

output.WriteLine(string.Format("{0},{1},{2},{3}",
                                                   var1,
                                                   var2,
                                                   var3,
                                                   var4
                                                   ));

现在通常它会进入var一个单独的单元格。但是,我发现如果我var的一个 s 中有一个逗号,它会将其视为单元格结尾,然后转到下一个。如何var在保持设置的同时忽略 s 中的逗号?

4

3 回答 3

6

我假设这是您正在创建的 CSV 文件。因此,您需要用双引号将包含逗号的值括起来。您可以包装所有内容(这更容易,例如:

output.WriteLine(string.Format("\"{0}\",\"{1}\",\"{2}\",\"{3}\"",
                                                   var1,
                                                   var2,
                                                   var3,
                                                   var4
                                                   ));

或者您可以编写一个小的辅助函数,例如:

public string EncodeCell(string value) {
   return value.Contains(",") ? String.Format("\"{0}\"", value) : value;
}

然后做:

output.WriteLine(string.Format("{0},{1},{2},{3}",
                                                   EncodeCell(var1),
                                                   EncodeCell(var2),
                                                   EncodeCell(var3),
                                                   EncodeCell(var4)
                                                   ));
于 2012-11-14T21:15:05.050 回答
1

取决于您希望如何输入昏迷。最简单的做法:

var1.Replace(",", "string to replace comma for")
var2.Replace(",", "string to replace comma for")
var3.Replace(",", "string to replace comma for")
...

使用 list/array 和 String.Join 也会更容易。

于 2012-11-14T21:15:06.577 回答
1

var在使用您选择的转义序列插入之前,请转义 s中的逗号。

于 2012-11-14T21:13:37.237 回答