2016-03-06 34 views
1

我使用这个代码导出* .TXT导出* .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(); 

我的文本文件中包含有逗号例如值数3,20

如何我可以改变它吗?并使用点导出它3.20

回答

2

简单的修复方法是应用.NET/C#String.Replace(",", ".")方法,但只有在该特定文本中没有使用“,”的其他情况时才适用。因此,下面的线将做的工作相当快的(最佳性能):如果值与输入,例如

dataGridView1.Rows[i].Cells[0].Value.ToString().Replace(",", ".") 

这也没关系,美元符号,如:$ 3,20(将被转换变成3.20美元)。

或者,您也可以使用结合Parse()(或TryParse())方法与CultureInfo类,它是某种通用的解决方案,但可能是“矫枉过正”了这个特殊的任务,也将需要更长的时间才能完成(IE会造成显著的性能下降)。此外,分析可能是有点问题的情况下,该值与主导货币符号(像上面这样$ 3,20提到)。

希望这可以帮助输入。

+1

最安全的人可能会应用特定的文化信息,使用点作为分隔符。 –

+0

谢谢先生,它工作100%。 – DmO

+0

不客气。祝你的项目好运。最好的祝福, –

0

由于这是货币数据,你可以将文本转换为小数使用Decimal.TryParse与文化设置为一个有十进制通信如(法国人说的):

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")); 

虽然这将有改变货币符号的副作用。为了确保保持不变,您必须克隆您用于输出的文化,并将其更改为货币符号。

0

使用CultureInfo.InvariantCultureToStringParse。所以在你的情况下,它看起来像这样:

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