我试图在长数字之间自动放置逗号,但到目前为止没有成功。我可能犯了一个非常简单的错误,但到目前为止我无法弄清楚。这是我目前拥有的代码,但由于某种原因,我得到 123456789 作为输出。
string s = "123456789";
string.Format("{0:#,###0}", s);
MessageBox.Show(s); // Needs to output 123,456,789
我试图在长数字之间自动放置逗号,但到目前为止没有成功。我可能犯了一个非常简单的错误,但到目前为止我无法弄清楚。这是我目前拥有的代码,但由于某种原因,我得到 123456789 作为输出。
string s = "123456789";
string.Format("{0:#,###0}", s);
MessageBox.Show(s); // Needs to output 123,456,789
尝试这个:
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);
但请考虑您正在使用的格式字符串......正如其他人所建议的那样,有更简洁的选项可用。
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
.
查看 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
您的代码有很多错误,很难描述每个细节。
看这个例子:
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();
}
}
}