4

intを常に9桁+2コンマの長さの文字列に変換する必要があります。

1は000,000,001になります

12345は000,012,345になります

等々

ToString()。PadLeft(...)を使用して先行ゼロを追加できることは知っていますが、いくつかのifテストを使用せずにコンマを追加する方法がわかりません。これを行うためのより効率的な方法はありますか?

4

5 に答える 5

10

使用するだけ:

int myint = 12345;
string formatted = myint.ToString("000,000,000");
于 2012-10-15T16:36:39.270 に答える
5
int number = 12345;
String result = String.Format("{0:000,000,000}", number);

ソース

于 2012-10-15T16:38:03.950 に答える
3

カスタム文字列形式を使用できます。これは単純ですが、手動でロールされた形式固有のコードほど効率的ではない可能性があります。

string text = value.ToString("000,000,000", CultureInfo.InvariantCulture);

CultureInfo.InvariantCulture現在のスレッドのカルチャのグループ化文字(および番号)の使用を避けるためのの使用に注意してください。

手巻きの1つのオプション:

static string ToDigitsAndCommas(int value)
{
    char[] chars = new char[11];
    chars[3] = ',';
    chars[7] = ',';
    int remainder;
    for (int i = 0; i < 9; i++)
    {
        value = Math.DivRem(value, 10, out remainder);
        chars[10 - i - (i / 3)] = (char) (remainder + '0');
    }
    return new string(chars);
}

ただし、単純なコードではなく、本当に必要かどうかを確認するために、これをベンチマークすることをお勧めします:)

于 2012-10-15T16:38:43.447 に答える
2

でフォーマット指定子を使用するだけですToString()

var stringified = yourNumber.ToString("000,000,000");

そして、あなたはそれをゼロで埋められたwコンマに戻すでしょう。

于 2012-10-15T16:37:00.243 に答える
1

ToString()を使用して、結果の形式を引数として指定します。

詳細については、 MSDNを参照してください

于 2012-10-15T16:34:59.653 に答える