2012-09-19 11 views
5

Ich versuche, String nach Indien Money-Format wie Eingabe "1234567" zu konvertieren, dann sollte Ausgabe als "12,34,567" kommenWie konvertiere ich die Zeichenfolge in das indische Geldformat?

Ich habe folgenden Code geschrieben, aber es gibt nicht die erwartete Ausgabe.

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

kann mir jemand sagen, wie man das macht?

+3

ich den Ausgang '₹ 12,34,567.00', die richtig scheint; Welcher Datentyp ist "Tarif"? –

+0

Siehe http://stackoverflow.com/questions/10416553/string-format-currency für ein Beispiel für Zahlenformatierung –

Antwort

12

Wenn fare ist jeder int, long, decimal, float oder double dann erhalte ich die erwartete Ausgabe von:

₹ 12,34,567.00.

Ich vermute, Ihre fare ist eigentlich eine string; Zeichenketten sind nicht von string.Format formatiert: sie sind bereits eine Zeichenkette: gibt es keinen Wert zu formatieren. Also: analysiere es zuerst (benutze alles, was angemessen ist, vielleicht eine invariante Dezimalanalyse), dann formatiere den analysierten Wert; zum Beispiel:

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

bearbeiten re Kommentare;

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

Eigentlich suche ich nach einer Ausgabe im String-Format wie 12,34,567 und nicht wie $ 12,34,567.00. Die obige Lösung gibt mir die letztere Antwort. –

+0

@BalrajSingh dann .... warum hast du 'c' angegeben? Einfach: '12,34,567' ist nicht das Währungsformat für hi-IN. –

+0

@BalrajSingh Ich habe ein Beispiel hinzugefügt, um eine Möglichkeit zu zeigen, diese Ausgabe zu erhalten –

0

String.Format („0: C0“) für keine Dezimalstellen nur den formatierten Wert ohne Währungssymbol oder Dezimalteil zu erhalten.

Per mein Kommentar oben können Sie erreichen, was Sie wünschen, durch eine Number Klonen und stellen Sie das Währungssymbol-Eigenschaft auf leere Zeichenkette

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

EDIT: Hier ist der oben verlinkten Beitrag für Ihre Frage formatiert:

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" 
Verwandte Themen