2012-09-19 16 views
5

Estoy tratando de convertir una cadena al formato India Money como si la entrada es "1234567" entonces la salida debería venir como "12,34,567"¿Cómo convierto una cadena al formato de dinero indio?

He escrito el siguiente código pero no está dando el resultado esperado.

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

¿alguien me puede decir cómo hacerlo?

+3

Aparece la salida '₹ 12,34,567.00', que parece correcta; ¿qué tipo de datos es 'tarifa'? –

+0

Consulte http://stackoverflow.com/questions/10416553/string-format-currency para obtener un ejemplo del formato de número –

Respuesta

12

Si es fare cualquiera de int, long, decimal, float o double en cuando me siento la salida esperada de:

₹ 12,34,567.00.

Sospecho que su fare es en realidad un string; las cadenas no están formateadas por string.Format: son ya una cadena: no hay ningún valor para formatear. Entonces: analice primero (usando lo que sea apropiado, tal vez un análisis decimal invariante), luego formatee el valor analizado; por ejemplo:

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

Editar re comentarios; para conseguir el valor con formato sin el símbolo de moneda o parte decimal:

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

. En realidad, estoy buscando un resultado en formato de cadena como 12,34,567 y no como $ 12,34,567.00. la solución anterior me da la última respuesta. –

+0

@BalrajSingh entonces ... ¿por qué especificaste 'c'? Simplemente: '12,34,567' no es el formato de moneda para hi-IN. –

+0

@BalrajSingh He agregado un ejemplo para mostrar una forma de obtener esa salida –

0

String.Format ("0: C0") para los que no hay decimales.

Según mi comentario anterior se puede lograr lo que deseo por clonación de un NumberFormatInfo y establezca la propiedad símbolo de moneda a cadena vacía

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

EDIT: Aquí es el post vinculado anteriormente con formato de tu pregunta:

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" 
Cuestiones relacionadas