9

I am trying to convert string to India Money format like if input is "1234567" then output should come as "12,34,567"

I have written following code but its not giving the expected output.

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

can anyone tell me how to do this?

J. Steen
  • 15,470
  • 15
  • 56
  • 63
Balraj Singh
  • 3,381
  • 6
  • 47
  • 82

4 Answers4

22

If fare is any of int, long, decimal, float or double then I get the expected output of:

₹ 12,34,567.00.

I suspect your fare is actually a string; strings are not formatted by string.Format: they are already a string: there is no value to format. So: parse it first (using whatever is appropriate, maybe an invariant decimal parse), then format the parsed value; for example:

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

Edit re comments; to get just the formatted value without the currency symbol or decimal portion:

string text = string.Format(hindi, "{0:#,#}", value);
Marc Gravell
  • 1,026,079
  • 266
  • 2,566
  • 2,900
0

String.Format("0:C0") for no decimal places.

As per my comment above you can achieve what you desire by cloning a numberformatinfo and set the currency symbol property to empty string

Example can be found here - look down the bottom of the page

EDIT: Here is the above linked post formatted for your question:

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"
Community
  • 1
  • 1
Paul Zahra
  • 9,522
  • 8
  • 54
  • 76
0

Try this

int myvalue = 123456789;
Console.WriteLine(myvalue.ToString("#,#.##", CultureInfo.CreateSpecificCulture("hi-IN")));//output;- 12,34,56,789
Zoe
  • 27,060
  • 21
  • 118
  • 148
shiv mysuru
  • 49
  • 10
0

If you want to show in Razor view file, then use,

@String.Format(new System.Globalization.CultureInfo("hi-IN"), "{0:c}", decimal.Parse("12345678", System.Globalization.CultureInfo.InvariantCulture))

// Output: ₹ 1,23,45,678.00
Pradip Rupareliya
  • 545
  • 1
  • 6
  • 18