0

我从网络服务中得到以下字符串:

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

5 回答 5

7
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
于 2013-11-13T14:10:20.643 回答
1

像这样的东西怎么样:

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

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

于 2013-11-13T14:07:54.667 回答
0

是和不是。首先,您拥有的是一个字符串,因此您无法在尝试更改它的格式。但是,为了达到您想要的效果,您可以将字符串解析为十进制值,然后使用小数的格式选项以任何合理的方式显示它。

于 2013-11-13T14:03:47.780 回答
0

您可以尝试这样的事情:

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

或者可能是这样的:

string str = yourNumber.Remove(",").Replace(".",",");
于 2013-11-13T14:07:54.690 回答
0

足够接近的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”。

于 2013-11-13T14:14:43.900 回答