web-dev-qa-db-ja.com

C#でカスタムの桁区切り記号を使用する

文字列を表示するときに、 '、'文字を1000の区切り文字として使用せず、代わりにスペースを使用しようとしています。カスタムカルチャーを定義する必要があると思いますが、正しく理解していないようです。ポインタはありますか?

例:1000000を1,000,000ではなく1 000 000として表示

(いいえ、String.Replace()は私が使用したいソリューションではありません:P)

35
Luk

NumberFormatInfo は、あなたが望むものに最も近いものを見つけることをお勧めします(つまり、桁区切り記号から離れているため) Clone() を呼び出します=オンにして、 NumberGroupSeparator プロパティを設定します。 (通貨フォーマットを使用して数値をフォーマットする場合は、代わりに CurrencyGroupSeparator も変更する必要があります。)string.Formatなどへの呼び出しのフォーマット情報としてそれを使用してください。そして、あなたは大丈夫です。例えば:

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
    }
}
71
Jon Skeet

独自の NumberFormatInfo (デリバティブ)を作成し、別の桁区切り記号を付けます。

8
Lucero

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
    }
}

また、「nfi」の初期化をスキップして、パラメーターとしてToString()メソッドに直接配置することもできます。

5
Invvard

最も簡単な方法...

num.ToString("### ### ### ### ##0.00")
2
Gordon Bell