intを常に9桁+2コンマの長さの文字列に変換する必要があります。
1は000,000,001になります
12345は000,012,345になります
等々
ToString()。PadLeft(...)を使用して先行ゼロを追加できることは知っていますが、いくつかのifテストを使用せずにコンマを追加する方法がわかりません。これを行うためのより効率的な方法はありますか?
使用するだけ:
int myint = 12345;
string formatted = myint.ToString("000,000,000");
int number = 12345;
String result = String.Format("{0:000,000,000}", number);
カスタム文字列形式を使用できます。これは単純ですが、手動でロールされた形式固有のコードほど効率的ではない可能性があります。
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);
}
ただし、単純なコードではなく、本当に必要かどうかを確認するために、これをベンチマークすることをお勧めします:)
でフォーマット指定子を使用するだけですToString()
:
var stringified = yourNumber.ToString("000,000,000");
そして、あなたはそれをゼロで埋められたwコンマに戻すでしょう。
ToString()を使用して、結果の形式を引数として指定します。
詳細については、 MSDNを参照してください