Balraj Singh
Balraj Singh

Reputation: 3471

How do I convert string to Indian Money format?

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?

Upvotes: 9

Views: 22409

Answers (4)

Pradip Rupareliya
Pradip Rupareliya

Reputation: 574

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

Upvotes: 0

shiv mysuru
shiv mysuru

Reputation: 49

Try this

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

Upvotes: 0

BLoB
BLoB

Reputation: 9725

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"

Upvotes: 0

Marc Gravell
Marc Gravell

Reputation: 1063944

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

Upvotes: 23

Related Questions