在较长的数字之间添加逗号

本文关键字:添加 之间 数字 | 更新日期: 2023-09-27 18:17:07

我试图自动在长数字之间放置逗号,但到目前为止还没有成功。我可能犯了一个非常简单的错误,但到目前为止我无法弄清楚。这是我目前拥有的代码,但由于某种原因,我123456789作为输出。

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

在较长的数字之间添加逗号

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的重载。

试试这个:

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); 

应该有效(您需要String.Format()传递一个数字,而不是另一个String(:

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

但是考虑一下您正在使用的格式字符串...正如其他人所建议的那样,有更干净的选择可用。

查看 MSDN:标准数字格式字符串上的数字格式信息,或者(可选(自定义格式字符串:自定义数字格式字符串。

对于自定义数字格式:

","字符既用作组分隔符,也用作数字缩放说明符。

double value = 1234567890;
Console.WriteLine(value.ToString("#,#", CultureInfo.InvariantCulture));
// Displays 1,234,567,890      
Console.WriteLine(value.ToString("#,##0,,", CultureInfo.InvariantCulture));
// Displays 1,235   

你的代码有很多错误,很难描述每一个细节。

请看这个例子:

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();
    }
  }
}