Use un separador de mil personalizado en C #

Intento no utilizar el carácter ‘,’ como un separador de mil cuando se muestra una cadena, sino utilizar un espacio en su lugar. Creo que necesito definir una cultura personalizada, pero parece que no lo hago bien. ¿Alguna sugerencia?

Ejemplo: muestre 1000000 como 1 000 000 en vez de 1,000,000

(no, String.Replace() no es la solución que me gustaría usar: P)

Le sugiero que busque un NumberFormatInfo que NumberFormatInfo más con lo que desea (es decir, está separado del separador de miles), llame a Clone() en él y luego configure la propiedad NumberGroupSeparator . (Si va a formatear los números usando formatos de moneda, necesita cambiar CurrencyGroupSeparator /). Úselo como la información de formato para sus llamadas a string.Format , etc., y debería estar bien. Por ejemplo:

 using System; using System.Globalization; class Test { static void Main() { NumberFormatInfo nfi = (NumberFormatInfo) CultureInfo.InvariantCulture.NumberFormat.Clone(); nfi.NumberGroupSeparator = " "; Console.WriteLine(12345.ToString("n", nfi)); // 12 345.00 } } 

Cree su propio NumberFormatInfo (derivado) con un separador de miles diferente.

Hay una versión ligeramente más simple de Jon Skeet one:

 using System; using System.Globalization; class Test { static void Main() { NumberFormatInfo nfi = new NumberFormatInfo {NumberGroupSeparator = " ", NumberDecimalDigits = 0}; Console.WriteLine(12345678.ToString("n", nfi)); // 12 345 678 } } 

Y la inicialización ‘nfi’ podría omitirse y ponerse directamente como parámetro en el método ToString ().

La manera más fácil…

 num.ToString("### ### ### ### ##0.00")