我需要将int转换为长度始终为9位+ 2个逗号的字符串。
1将成为000,000,001
12345将成为000,012,345
等等
我知道我可以使用ToString()。PadLeft(...)添加前导零但不知道如何添加逗号而不使用一些if测试。有没有更有效的方法来做到这一点?
答案 0 :(得分:10)
只需使用:
int myint = 12345;
string formatted = myint.ToString("000,000,000");
答案 1 :(得分:5)
int number = 12345;
String result = String.Format("{0:000,000,000}", number);
答案 2 :(得分: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);
}
我建议对此进行基准测试,以确定您是否真的 需要它而不是更简单的代码:)
答案 3 :(得分:2)
只需在ToString()
中使用格式说明符:
var stringified = yourNumber.ToString("000,000,000");
你会把它归还零填充逗号。
答案 4 :(得分:1)
使用ToString()并将结果格式指定为参数。
有关详细信息,请参阅MSDN