c# - 如何正确格式化字符串?

标签 c# string-formatting stringbuilder

我有一条消息,打印出实体的名称及其计数。我使用了 StringBuilder 类。我有这样的代码:

   message.AppendFormat("Items1:    {0}",item1count).AppendLine();
   message.AppendFormat("Items2Byb:    {0}",item2count).AppendLine();
   message.AppendFormat("Items3STCDEE:    {0}",item3count).AppendLine();
   message.AppendFormat("Items4HTECEEGG:    {0}",item4count).AppendLine();
   message.AppendFormat("ItemsASSTEC:    {0}",item5count).AppendLine();

结果是这样出来的:

  Items1:         1
  Items2Byb:         3
  Items3STCDEE           5

我想要的是正确的对齐方式,无论 Item 名称的长度是多少:

      Items1:            1
      Items2Byb:         3
      Items3STCDEE       5

最佳答案

这是一种不使用 PadRight 的方法,它假定左侧标签的最大长度为 20。当然,您应该将数字调整为 1 + max

using System;
using System.IO;
using System.Text;

public class P{
    public static void Main(string[] args) {
        StringBuilder message = new StringBuilder();
        message.AppendFormat("{0,-20}{1}","Items1:",1).AppendLine();
        message.AppendFormat("{0,-20}{1}","Items2Byb:",2).AppendLine();
        message.AppendFormat("{0,-20}{1}","Items3STCDEE:", 3).AppendLine();
        message.AppendFormat("{0,-20}{1}","Items4HTECEEGG:",4).AppendLine();
        message.AppendFormat("{0,-20}{1}","ItemsASSTEC:",5).AppendLine();
        Console.WriteLine(message.ToString());
    }
}

输出:

Items1:             1
Items2Byb:          2
Items3STCDEE:       3
Items4HTECEEGG:     4
ItemsASSTEC:        5

关于c# - 如何正确格式化字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25389249/

相关文章:

c# - 将 DateTime 格式化为字符串

python - python 2.7 中的 string_builder 装饰器 - 如何做以及我应该做吗?

string - 哪个方案的性能更好 : StringBuilder or String Interpolation-Concatenation

c# - 串口通信需要校验和

c# - .Net 平台目标优化

python - 如何使用 SI 前缀(micro、milli、Mega、Giga 等)格式化数字?

string - 为什么 string.Builder Reset() 不保留底层缓冲区?

c# - 为什么包含在 EF6 中被忽略

c# - 事件、使用这些事件的方法和继承

swift - 在 Swift 中删除 x 个小数位的尾随零的格式字符串