C# 导出*.txt文件将逗号转换为点

C# 导出*.txt文件将逗号转换为点,c#,C#,我正在使用此代码导出一个*.txt文件 TextWriter sw = new StreamWriter(@"C:\fiscal.txt"); int rowcount = dataGridView1.Rows.Count; for (int i = 0; i < rowcount - 1; i++) { sw.Write("{0,-20}", dataGridView1.Rows[i].Cells[0].Value.ToString()); }

我正在使用此代码导出一个*.txt文件

TextWriter sw = new StreamWriter(@"C:\fiscal.txt");       

int rowcount = dataGridView1.Rows.Count;

for (int i = 0; i < rowcount - 1; i++)
{
    sw.Write("{0,-20}", dataGridView1.Rows[i].Cells[0].Value.ToString());       
}                

sw.Close();
TextWriter sw=newstreamwriter(@“C:\fiscal.txt”);
int rowcount=dataGridView1.Rows.Count;
对于(int i=0;i
我的文本文件包含一个带有逗号的数值示例3,20


我怎样才能改变它?要使用dot 3.20导出它,简单的解决方法是应用.NET/C#
String.Replace(“,”,“)
方法,但前提是在该特定文本中没有其他使用“,”的情况;因此,下面这一行将相当快地完成工作(最佳性能):

如果输入的值带有美元符号,例如:$3,20(将转换为$3.20),那么它也可以正常工作

或者,您可以将
Parse()
(或
TryParse())
方法与
CultureInfo
类结合使用,这是一种通用的解决方案,但对于此特定任务来说可能是一种“过度杀伤力”,并且需要更长的时间才能完成(即会导致性能显著降低)。此外,如果输入的值带有前导货币符号(如上面提到的$3,20),解析可能会有点问题


希望这会有所帮助。

由于这是货币数据,您可以使用
Decimal.TryParse
将文本转换为小数,并将区域性设置为具有小数逗号的区域(法语说):

然后使用小数点文化(英语说):

尽管这会产生改变货币符号的副作用。要确保保持不变,您必须克隆用于输出的区域性并更改其货币符号。

中使用ToString
解析
。所以在你的例子中,它看起来是这样的:

sw.Write("{0,-20}", dataGridView1.Rows[i].Cells[0].Value.ToString(CultureInfo.InvariantCulture));

最安全的方法可能是应用特定的文化信息,使用点作为分隔符。谢谢,先生,它100%有效。欢迎您。祝你的项目好运。顺致敬意,
NumberStyles style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;

decimal result;
if (decimal.TryParse(text, style, new CultureInfo("fr-FR"), out result))
{

}
string outputText = result.ToString("C", new CultureInfo("en-GB"));
sw.Write("{0,-20}", dataGridView1.Rows[i].Cells[0].Value.ToString(CultureInfo.InvariantCulture));