【问题标题】:how to add certain number of whitespaces to StringBuilder?如何向 StringBuilder 添加一定数量的空格?
【发布时间】:2012-06-03 11:44:37
【问题描述】:

如何向 StringBuilder 添加一定数量(1 到 100 之间)的空格?

StringBuilder nextLine = new StringBuilder();
string time = Util.CurrentTime;
nextLine.Append(time);
nextLine.Append(/* add (100 - time.Length) whitespaces */);

什么是“理想”的解决方案? for 循环很丑。我还可以创建数组,其中whitespaces[i] 包含正好包含i 空格的字符串,但这将是相当长的硬编码数组。

【问题讨论】:

    标签: c#


    【解决方案1】:

    您可以使用StringBuilder.Append(char,int) 方法,它将指定的Unicode 字符重复指定的次数:

    nextLine.Append(time);
    nextLine.Append(' ', 100 - time.Length);
    

    更好的是,将两个追加合并到一个操作中:

    nextLine.Append(time.PadRight(100));
    

    这将附加您的time 字符串,后跟100 - time.Length 空格。

    编辑:如果您只使用StringBuilder 来构造填充时间,那么您可以完全取消它:

    string nextLine = time.PadRight(100);
    

    【讨论】:

    • 创建一个中间字符串在某种程度上违背了 StringBuilder 的目的,不是吗?
    • @dtb:我假设StringBuilder 被用来构造一个比填充的time 更长的字符串。如果不是,那么一个简单的time.PadRight(100) 将首先消除对StringBuilder 的需求。
    • 在这种情况下,我会选择nextLine.Append(time.PadRight(100))。也就是说,如果你真的需要自己添加空格(而不是填充字符串),那么 dtb 的 StringBuilder.Append(char,int) 可能比 new string(char,int) 更可取。
    • 叹息……因为投票者似乎很开心,所以我正在编辑我的答案。
    【解决方案2】:

    您可以使用带有charintStringBuilder.Append overload

    nextLine.Append(' ', 100 - time.Length);
    

    【讨论】:

      【解决方案3】:

      使用 PadLeft -

      nextLine.Append(String.Empty.PadLeft(' ', 100 - time.Length));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-17
        • 1970-01-01
        相关资源
        最近更新 更多