Search code examples
c#windows-8.net-4.5

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?


Solution

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