c# - 添加用于填充字符串的参数 (C#)

标签 c# string-formatting

{0,N} 格式会用空格向左侧填充字符串。例如:

string [] names = { "A", "Bob", "Charles" };
Console.WriteLine("{0}{0,15}", names[0]);
Console.WriteLine("{0}{0,13}", names[1]);
Console.WriteLine("{0}{0,10}", names[2]);

这会导致总长度为 16 个字符的行:

A                A
Bob            Bob
Charles    Charles

您可以使用String.PadLeft实现相同的效果,例如:

foreach (var name in names)
{
    Console.WriteLine("{0}{1}", name, name.PadLeft(16-name.Length, ' '));
}

此尝试将参数添加到 {0,N} 格式可以编译,但在运行时抛出异常:

foreach (var name in names)
{
    Console.WriteLine("{0}{0,16-name.Length}", name);
}

是否可以将参数传递为 {0,N} 样式格式?

最佳答案

您可以使用string interpolation并用双大括号表示格式模式:

string[] names = { "A", "Bob", "Charles" };

int paddingMax = 16;

foreach (string name in names)
  Console.WriteLine($"{{0}}{{0,{paddingMax - name.Length}}}", name);

输出:

A              A
Bob          Bob
Charles  Charles

检查是否爆发:

foreach ( string name in names )
{
  int padding = paddingMax - name.Length;
  if ( padding < 0 )
    Console.WriteLine("Padding error for: " + name);
  else
    Console.WriteLine($"{{0}}{{0,{padding}}}", name);

关于c# - 添加用于填充字符串的参数 (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65184305/

相关文章:

从十进制开始的小时和分钟的 C# 字符串格式

php - 如何在php中用printf格式化数组

javascript - 如何从 JavaScript 传递服务器端方法的参数值?

c# - 单击按钮后如何清除复选框

c# - 方法参数 : Interface VS Generic type

c# - 访问类成员的类型安全枚举

python - 什么是 Ruby 等价于 Python 的 `s= "你好,%s。 %s 在哪里 ?"% ("John","Mary")`

java - 为什么 sc.next() 或 sc.nextLine() 在循环内不起作用?

iPhone "count"挫折?

c# - Windows Phone 8.1 中的设备唯一 ID