0

長い数字の間にコンマを自動的に入れようとしていますが、これまでのところ成功していません。私はおそらく非常に単純な間違いを犯していますが、今のところ私はそれを理解できません。これは私が現在持っているコードですが、何らかの理由で出力として 123456789 が得られます。

    string s = "123456789";
    string.Format("{0:#,###0}", s);
    MessageBox.Show(s); // Needs to output 123,456,789
4

5 に答える 5

1

これを試して:

string value = string.Format("{0:#,###0}", 123456789);

あなたのコード{では、フォーマット文字列にイニシャルがありません。数値の書式設定オプションが数値に適用されますsが、あなたは文字列です。
次のようにして、文字列を数値に変換できますint.Parse

int s = int.Parse("123456789");
string value = string.Format("{0:#,###0}", 123456789);
MessageBox.Show(value); 
于 2013-06-05T13:21:04.560 に答える
1

String.Format()これは機能するはずです(別のではなく、数値を渡す必要がありますString):

Int32 i = 123456789;
String s = String.Format("{0:#,###0}", i);
MessageBox.Show(s);

しかし、使用しているフォーマット文字列を考慮してください...他の人が示唆しているように、利用可能なよりクリーンなオプションがあります。

于 2013-06-05T13:23:21.437 に答える
1
var input = 123456789;

// these two lines amount to the same thing
Console.WriteLine(input.ToString("N0"));
Console.WriteLine(string.Format("{0:N0}", input));

質問のとおり、次から始める必要がある場合string:

var stringInput = "123456789";
var input = int.Parse(stringInput);

// these two lines amount to the same thing
Console.WriteLine(input.ToString("N0"));
Console.WriteLine(string.Format("{0:N0}", input));

解析/フォーマットするときは、文化も考慮する必要があるかもしれません。を取るオーバーロードを参照してくださいIFormatProvider

于 2013-06-05T13:23:27.337 に答える
0

MSDN: Standard Numeric Format Stringsの数値書式設定情報を確認するか、オプションでカスタム書式文字列: Custom Numeric Format Stringsを確認してください。

カスタム数値形式の場合:

「,」文字は、グループ セパレータと数値スケーリング指定子の両方として機能します。

double value = 1234567890;
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture));
// Displays 1,234,567,890      
Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture));
// Displays 1,235   
于 2013-06-05T13:20:04.977 に答える
0

あなたのコードには多くの問題があり、すべての詳細を説明するのは困難です。

この例を見てください:

namespace ConsoleApplication1
{
  using System;

  public class Program
  {
    public static void Main()
    {
      const int Number = 123456789;
      var formatted = string.Format("{0:#,###0}", Number);

      Console.WriteLine(formatted);
      Console.ReadLine();
    }
  }
}
于 2013-06-05T13:25:28.183 に答える