8

我正在尝试将字符串转换为 India Money 格式,例如如果输入为“1234567”,则输出应为“12,34,567”

我已经编写了以下代码,但它没有给出预期的输出。

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

谁能告诉我该怎么做?

4

4 回答 4

20

如果fareint, long, decimal, floator中的任何一个,double我会得到预期的输出:

₹ 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);
于 2012-09-19T10:11:15.347 回答
1

试试这个

int myvalue = 123456789;
Console.WriteLine(myvalue.ToString("#,#.##", CultureInfo.CreateSpecificCulture("hi-IN")));//output;- 12,34,56,789
于 2018-10-16T15:42:04.933 回答
0

String.Format("0:C0") 没有小数位。

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

示例可以在这里找到 - 向下看页面底部

编辑:这是针对您的问题格式化的上述链接帖子:

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"
于 2012-09-19T10:31:42.107 回答
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
于 2018-10-18T07:09:48.900 回答