我是c#的初学者,并且有这个字符串的值:
123456
但是想把那个字符串转换成我的国家的钱,想把这个字符串值转换成这个:
123,456
例如,如果字符串编号是这样的话,总是用逗号分割三个数字:
1234567890
向用户显示:
1,234,567,890
我怎样才能编写有意义的代码?
答案 0 :(得分:2)
我建议先将其转换为int
(或long
),然后使用ToString()
并提供所需的格式。
int number = int.Parse(numberString); //ex..
number.ToString("N0"); // 1,000,000
如果您询问特定于文化的格式,那么您可以这样做。
number.ToString("N0", CultureInfo.CreateSpecificCulture("es-US"));
上详细了解
示例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 formatters和CultureInfo。
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()
);
}
}