2012-09-19 5 views
5

Sto cercando di convertire la stringa in formato India Money come se l'input è "1234567", quindi l'output dovrebbe venire come "12,34,567"Come si converte la stringa in formato Money indiano?

Ho scritto il seguente codice ma non fornisce l'output previsto.

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

qualcuno può dirmi come fare questo?

+3

Ottengo l'output '$ 12,34,567.00', che sembra corretto; quale tipo di dati è 'fare'? –

+0

Vedere http://stackoverflow.com/questions/10416553/string-format-currency per un esempio di formattazione dei numeri –

risposta

12

Se fare è una delle int, long, decimal, float o double tanto sono l'output previsto di:

₹ 12,34,567.00.

Sospetto che il tuo fare sia in realtà un string; le stringhe non sono formattate da string.Format: sono già una stringa: non è possibile formattare il valore. 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 re commenti; per ottenere solo il valore formattato senza il simbolo di valuta o parte decimale:

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

In realtà sto cercando un output in formato stringa come 12,34,567 e non come € 12,34,567,00. la soluzione di cui sopra mi dà la seconda risposta. –

+0

@BalrajSingh allora .... perché hai specificato 'c'? Semplicemente: '12,34,567' non è il formato valuta per hi-IN. –

+0

@BalrajSingh Ho aggiunto un esempio per mostrare un modo per ottenere quell'uscita –

0

String.Format ("0: C0") per un periodo non decimali.

Come per il mio commento sopra è possibile ottenere ciò che si desidera clonando un NumberFormatInfo e impostare la proprietà simbolo di valuta a stringa vuota

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

EDIT: Ecco il post di cui sopra collegato 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"