我正在尝试将字符串转换为印度货币格式,如果输入为“1234567”,则输出应为“12,34,567”
我已编写以下代码,但未提供预期的输出。
CultureInfo hindi = new CultureInfo("hi-IN");
string text = string.Format(hindi, "{0:c}", fare);
return text;
谁能告诉我怎么做?
答案 0 :(得分:15)
如果fare
是int
,long
,decimal
,float
或double
中的任何一个,那么我会得到预期的输出:< / p>
₹ 12,34,567.00
。
我怀疑你的fare
实际上是string
;字符串未按string.Format
格式化:它们已字符串:没有格式化值。所以:首先解析它(使用任何适当的,可能是一个不变的十进制解析),然后格式化解析的值;例如:
// here we assume that `fare` is actually a `string`
string fare = "1234567";
decimal parsed = decimal.Parse(fare, CultureInfo.InvariantCulture);
CultureInfo hindi = new CultureInfo("hi-IN");
string text = string.Format(hindi, "{0:c}", parsed);
编辑评论;只得到没有货币符号或小数部分的格式化值:
string text = string.Format(hindi, "{0:#,#}", value);
答案 1 :(得分:0)
String.Format(“0:C0”)表示无小数位。
根据我上面的评论,您可以通过克隆numberformatinfo并将货币符号属性设置为空字符串来实现您的目标
Example can be found here - look down the bottom of the page
编辑:以下是为您的问题格式化的上述链接帖子:
var cultureInfo = new CultureInfo("hi-IN")
var numberFormatInfo = (NumberFormatInfo)cultureInfo.NumberFormat.Clone();
numberFormatInfo.CurrencySymbol = "";
var price = 1234567;
var formattedPrice = price.ToString("0:C0", numberFormatInfo); // Output: "12,34,567"
答案 2 :(得分:0)
尝试一下
int myvalue = 123456789;
Console.WriteLine(myvalue.ToString("#,#.##", CultureInfo.CreateSpecificCulture("hi-IN")));//output;- 12,34,56,789
答案 3 :(得分:0)
如果要在Razor视图文件中显示,请使用
@String.Format(new System.Globalization.CultureInfo("hi-IN"), "{0:c}", decimal.Parse("12345678", System.Globalization.CultureInfo.InvariantCulture))
// Output: ₹ 1,23,45,678.00