40

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

例: 1000000 を 1,000,000 ではなく 1 000 000 と表示する

(いいえ、String.Replace()私が使いたい解決策ではありません:P)

4

4 に答える 4

77

必要なものに最も近いa を見つけてNumberFormatInfo(つまり、千単位の区切り記号から離れている)、Clone()それを呼び出してプロパティを設定することをお勧めしNumberGroupSeparatorます。CurrencyGroupSeparator(通貨形式を使用して数値をフォーマットする場合は、代わりに/同様に変更する必要があります。)それをstring.Formatetc への呼び出しの形式情報として使用すれば、問題ありません。例えば:

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
    }
}
于 2009-04-15T15:12:00.663 に答える
9

別の桁区切り記号を使用して、独自のNumberFormatInfo (派生物) を作成します。

于 2009-04-15T15:12:08.913 に答える
7

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() メソッドに入れることができます。

于 2014-01-24T13:14:35.263 に答える
3

最も簡単な方法...

num.ToString("### ### ### ### ##0.00")
于 2009-04-15T15:18:55.763 に答える