如何在单行中将逗号转换为句点和句点到逗号

时间:2012-04-23 13:16:55

标签: c# c#-4.0

我有一个像12,345,678.09这样的数字,我想将其转换为12.345.678,09 我正在考虑用.拆分字符串,并将字符串中的逗号更改为句点,然后用逗号连接它们。

string value = "12,345,678.09";
string[] parts = value.Split(new char[]{'.'});
string wholeNumber = parts[0].Replace(",", ".");
string result = String.Format("{0},{1}", wholeNumber, parts[1]);

我觉得这种方法非常笨拙。有更好的方法吗?

5 个答案:

答案 0 :(得分:9)

如果您的字符串中没有任何符号出现,例如'$',则可以这样做:

parts[0].Replace(",", "$").Replace(".", ",").Replace("$", ".");

可以肯定的是,就CPU周期而言,这并不是最理想的,但它可以保持一条线。

答案 1 :(得分:8)

正确执行此操作的方法(与非字符串混合一样正确)是使用CultureInfo来表示您要格式化的文化。看起来你是在追随意大利文化it-IT

var num = 123456789.01;
var ci = new CultureInfo("it-IT");
Console.WriteLine(num.ToString("#,##0.00",ci)); //output 123.456.789,01

实例:http://rextester.com/ARWF39685

请注意,在格式字符串中,您使用,表示“数字组分隔符”,.表示“小数点分隔符”,但是文化信息将替换为正确的文化分隔符 - 意大利文化的术语完全相反(.是组分隔符,,是小数分隔符。)

答案 2 :(得分:4)

string value = "12,345,678.90";
value = string.Join(".", value.Split(',').Select(s => s.Replace(".", ",").ToArray());

答案 3 :(得分:1)

你有

string value = "12,345,678.09";
value = value.replace(",", "_").replace(".", ",").replace("_", ".")

答案 4 :(得分:0)

你可以选择:

string newString = Convert.ToDouble(oldString).ToString("#,0.##", new CultureInfo("de-DE"));

更多信息here 这一切都在你想要的一行中,并建议的方式去 您还可以使用其他文化或CultureInfo.CurrentCulture来显示用户查看它们的方式。如果他在意大利语窗口,他将CurrentCulture == "it-IT"和相应的数字格式。 CurrentCulture可能就是你想要的,我假设,在我错的时候纠正我 编辑:根据Jamiecs注释格式不能以这种方式对字符串起作用,所以我添加了一个转换。但要注意:如果转换不起作用,它可能会抛出异常。所以最好在多行中使用Double.TryParse()或类似的东西。