2014-02-15 4 views
0

Просто наткнулся на эту строку кода:Устаревший код форматирует число. Как я могу выразить это более современным/понятным способом?

string sNumFormat = new string('0', Convert.ToString(totalCount).Length); 

где TOTALCOUNT целое.

Он используется здесь:

kNewComp.Name 
    = baseName + string.Format("{0:" + sNumFormat + "}", 1 + componentIndex); 

Я уверен, что это просто интересный способ обеспечения номера дополняются ведущими нулями, но я не видел, как это выражается совсем как это раньше.

Есть ли более стандартный способ достижения такого же эффекта?

+0

Поскольку ваш код уже работает, это лучше подходит для [Обзор кода] (http://codereview.stackexchange.com/). Кроме того, взгляните на [String.PadLeft] (http://msdn.microsoft.com/en-us/library/system.string.padleft%28v=vs.110%29.aspx) –

ответ

1
NewComp.Name = baseName + string.Format("{0:" + sNumFormat + "}", 1 + componentIndex); 

Может быть заменен

var s = (1 + componentIndex).ToString(); 
var digits = (int) (Math.Ceiling(Math.Log10(totalCount))); 
Console.Write(s.PadLeft(digits, '0')); 

И тогда вы можете избавиться от sNumFormat.

Обратите внимание, что преобразование в string не является хорошим способом измерения цифр. См.: Get number of digits before decimal point

Смежные вопросы