如何将字符串转换为印度货币格式?

我试图将字符串转换为印度货币格式,如果输入是“1234567”然后输出应为“12,34,567”

我写了下面的代码,但它没有给出预期的输出。

CultureInfo hindi = new CultureInfo("hi-IN"); string text = string.Format(hindi, "{0:c}", fare); return text; 

谁能告诉我怎么做?

如果fareintlongdecimalfloatdouble任何一个,那么我得到预期的输出:

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

String.Format(“0:C0”)表示无小数位。

根据我上面的评论,您可以通过克隆numberformatinfo并将货币符号属性设置为空字符串来实现您的需求

可以在此处找到示例 – 查看页面底部

编辑:以下是针对您的问题格式化的上述链接post:

 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" 

试试这个

 int myvalue = 123456789; Console.WriteLine(myvalue.ToString("#,#.##", CultureInfo.CreateSpecificCulture("hi-IN")));//output;- 12,34,56,789 

如果你想在Razor视图文件中显示,那么使用,

 @String.Format(new System.Globalization.CultureInfo("hi-IN"), "{0:c}", decimal.Parse("12345678", System.Globalization.CultureInfo.InvariantCulture)) // Output: ₹ 1,23,45,678.00