将十进制货币转换为逗号分隔值

我从webservice获得以下字符串:

12.95

要么

1,200.99

是否有选项可以在不操作字符串的情况下将这些值转换为以下值?

12,95

要么

1200,99

我尝试了一些文化选项,但没有把它弄好……

编辑

我试过这个:

  //return string.Format( "{0:f2}", Convert.ToDecimal( price ) ); //return string.Format(CultureInfo.GetCultureInfo("de-de"), "{0:0}", price); NumberFormatInfo format = new System.Globalization.NumberFormatInfo(); format.CurrencyDecimalDigits = 2; format.CurrencyDecimalSeparator = ","; format.CurrencyGroupSeparator = ""; return decimal.Parse(price).ToString(format); 

 var input = "1,200.99"; //Convert to decimal using US culture (or other culture using . as decimal separator) decimal value = decimal.Parse(input, CultureInfo.GetCultureInfo("en-US")); //Convert to string using DE culture (or other culture using , as decimal separator) string output = value.ToString(CultureInfo.GetCultureInfo("de-DE")); Console.WriteLine(output); //1200,99 

这样的事情怎么样:

  double number; double.TryParse("1,200.99", NumberStyles.Any, CultureInfo.CreateSpecificCulture("en-US"), out number); var formattedNumber = number.ToString(CultureInfo.CreateSpecificCulture("de-DE")); 

然后返回或写出formattedNumber(无论你需要做什么)。

是的,不是。 首先,你拥有的是一个字符串,因此你不能在尝试时改变它的格式。 但是,要实现您想要的,您可以将字符串解析为十进制值,然后使用小数的格式选项以任何合理的方式显示它。

您可以尝试这样的事情:

 String.Format("{0:#,###0}", 0); 

或者可能是这样的:

 string str = yourNumber.Remove(",").Replace(".",","); 

足够接近tronc,

试试这个片段:

 String curStr = "12.95"; Decimal decVal; var valid = Decimal.TryParse(curStr, out decVal); if (!valid) throw new Exception("Invalid format."); String newFormat = decVal.ToString("C", System.Globalization.CultureInfo.CreateSpecificCulture("de-DE")); 

toString(…)调用中,您可以在“C”之后附加一个数字,以指定应遵循的小数位数。 例如“C3”。