我希望能够动态设置字段宽度,具体取决于字符串长度。
这是我的代码。
static void Main(string[] args)
{
string[] names = { "Adam", "Ron", "Carla", "Daniel", "Farla", "Marrietta" };
decimal[] hours = { 40, 6.667M, 40.39M, 82, 40.333M, 80 };
var sorted = names.OrderBy(n => n.Length);
int longest = sorted.LastOrDefault().Length + 1;
Console.WriteLine($"{"Name", longest} {"Hours",5}\n");
for(var ctr = 0; ctr < names.Length; ctr++)
{
Console.WriteLine($"{names[ctr],longest} {hours[ctr],5:N1}");
}
}
我收到的错误是预期的常数值,而不是“最长的。”
答案 0 :(得分:1)
string.Format()
(以及相应的字符串插值)需要这些格式的常量值。
您可以改为使用string.PadLeft()
:
for(var ctr = 0; ctr < names.Length; ctr++)
{
Console.WriteLine($"{names[ctr].PadLef(longest)} {hours[ctr],5:N1}");
}
答案 1 :(得分:0)
您的代码失败,因为iterpolation不允许字段宽度表达式中的变量
尝试使用string.PadRight:
(transactions.c.cost_data['subtotal'].astext.cast(sqlalchemy.Float) + transactions.c.cost_data['cost'].astext.cast(sqlalchemy.Float)).label('total_cost')