C# 移除或禁用';不要写最后一个';行中的符号
我已经导出到CSV脚本 我导出结构的列表。我在StringWriter的帮助下写作。在每个循环的结构域数组中,我遍历所有属性,并在每个属性之后放置“;”。在这行的末尾,我放了WriteLine() 因此,作为输出,我有:C# 移除或禁用';不要写最后一个';行中的符号,c#,csv,export,C#,Csv,Export,我已经导出到CSV脚本 我导出结构的列表。我在StringWriter的帮助下写作。在每个循环的结构域数组中,我遍历所有属性,并在每个属性之后放置“;”。在这行的末尾,我放了WriteLine() 因此,作为输出,我有: value1;value2;value3; 我想: value1;value2;value3 问题是:如何从我得到的东西中得到我想要的,或者基于我已经取得的东西 我现在有3个想法: 行中的最后两个符号应该类似“;\r(\n)”所以将此组合替换为零 检查属性是否为最后一个 修
value1;value2;value3;
我想:
value1;value2;value3
问题是:如何从我得到的东西中得到我想要的,或者基于我已经取得的东西
我现在有3个想法:
str.TrimEnd(';');
使用String.Join形成输出的每一行。它可以避免您必须检查哪个术语是最后一个术语 线路将是
"value1;value2;value3"
通常我只是在行形成后删除最后一个字符。我使用
StringBuilder
,只需执行以下操作:
var builder = new StringBuilder();
// ...
// add the text
// ...
builder.Length--;
这样我可以避免字符串复制。-1-删除最后一个字符将再次创建整个字符串,最好使用
string。Join()
StringBuilder不会再次创建整个字符串,但您的解决方案更好。不错,但对于大字符串来说有问题,因为它会导致复制。
var builder = new StringBuilder();
// ...
// add the text
// ...
builder.Length--;