Come posso convertire la stringa in formato Indian Money?

Sto cercando di convertire la stringa in formato India Money come se l’input fosse “1234567”, quindi l’output dovrebbe arrivare come “12,34,567”

Ho scritto il seguente codice ma non fornisce l’output atteso.

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

Qualcuno può dirmi come farlo?

Se la fare è qualsiasi di int , long , decimal , float o double ottengo l’output atteso di:

₹ 12,34,567.00 .

Sospetto che la tua fare sia in realtà una string ; le stringhe non sono formattate da string.Format : sono già una stringa: non c’è alcun valore da formattare . Quindi: analizzalo prima (usando qualunque cosa sia appropriata, magari un’analisi decimale invariante), quindi formatta il valore analizzato; per esempio:

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

Modifica i commenti; per ottenere solo il valore formattato senza il simbolo di valuta o la parte decimale:

 string text = string.Format(hindi, "{0:#,#}", value); 

String.Format (“0: C0”) per nessuna posizione decimale.

Come per il mio commento sopra, puoi ottenere ciò che desideri clonando un numeroformatinfo e imposta la proprietà del simbolo di valuta sulla stringa vuota

L’esempio può essere trovato qui – guarda in fondo alla pagina

EDIT: Ecco il post collegato in precedenza formattato per la tua domanda:

 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"