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以避免使用当前线程的文化的分组字符(和数字)。

手卷的一种选择:

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 回答