如何将字符串值转换为里亚尔货币单位?

时间:2016-06-01 06:27:23

标签: c#

我是c#的初学者,并且有这个字符串的值:

123456


但是想把那个字符串转换成我的国家的钱,想把这个字符串值转换成这个:

123,456


例如,如果字符串编号是这样的话,总是用逗号分割三个数字:

1234567890


向用户显示:

1,234,567,890


我怎样才能编写有意义的代码?

4 个答案:

答案 0 :(得分:2)

我建议先将其转换为int(或long),然后使用ToString()并提供所需的格式。

int number = int.Parse(numberString);  //ex..
number.ToString("N0");  // 1,000,000

如果您询问特定于文化的格式,那么您可以这样做。

number.ToString("N0", CultureInfo.CreateSpecificCulture("es-US"));

您可以在standard numeric formats

上详细了解

示例code

答案 1 :(得分:2)

由于您希望将您的值转换为货币,我建议使用.NET提供的string formats的“C”。

123456.125M.ToString("C"); // $123,456.13

string面前的签名将由您的机器文化定义。更多信息here.

另一方面,还有另一种解决方案来添加自己的自定义格式:

123456.125M.ToString("#,0.################"); // 123,456.125

这不是一种干净的方式,但我从未发现一种以通用方式实际形成这种方式的正确方法。

附注:对于货币处理,通常认为使用decimal是一种好习惯。因为它没有浮点问题。

答案 2 :(得分:2)

使用所需国家/地区standard formattersCultureInfo

e.g

int i = int.Parse("123456");
string money = i.ToString("C", CultureInfo.CreateSpecificCulture("fr-Ir"));

或者系统文化是否为fr-Ir

string money = i.ToString("C");

相同
string money = i.ToString("C", CultureInfo.CurrentCulture);

或者,如果您想使用UI文化(请求浏览器的文化)

string money = i.ToString("C", CultureInfo.CurrentUICulture);

答案 3 :(得分:-3)

请尝试这个希望会有所帮助

虚空方法中的内容是什么

using System.Linq;

public class Program
{
    public  void ABC()
    {


        var data = "123456789";
        const int separateOnLength = N;

        var separated = new string(
         data.Select((x,i) => i > 0 && i % separateOnLength == 0 ? new [] { ',', x } : new [] { x })
        .SelectMany(x => x)
        .ToArray()
    );

    }
}