【问题标题】:Format Strings in Console.WriteLine method在 Console.WriteLine 方法中格式化字符串
【发布时间】:2010-11-19 09:51:24
【问题描述】:

我是 C# 编程新手。谁能解释一下下面的代码:

Console.WriteLine( "{0}{1,10}", "Face", "Frequency" ); //Headings
Console.WriteLine( "{0,4}{1,10}",someval,anotherval);

我知道这会打印两列带有给定标题的值,{0} 指的是给定的第一个参数。但是{x,y}这种形式的格式字符串是什么意思呢?

【问题讨论】:

    标签: c# .net string formatting


    【解决方案1】:

    它在左侧添加填充。以下备忘单对于记住各种字符串格式模式非常有用:

    .NET String.Format Cheat Sheet

    正值向左添加内边距,负数向右侧添加内边距

    Sample                                 Generates
    String.Format("[{0, 10}]", "Foo");     [∙∙∙∙∙∙∙Foo]
    String.Format("[{0, 5}]", "Foo");      [∙∙Foo]
    String.Format("[{0, -5}]", "Foo");     [Foo∙∙]
    String.Format("[{0, -10}]", "Foo");    [Foo∙∙∙∙∙∙∙]
    

    【讨论】:

    • 感谢 0xA3 的回复。如果我理解正确,这是否意味着 {1,10} 会打印第二个参数和紧随其后的 10 个空格?
    • @Joe:不,填充意味着字符串被填充到指定长度的空格,请参阅我的答案中的示例。
    • 据我所知,这个备忘单是完全错误的!使用了错误的索引,正/负对齐与实际情况相反。所以,要产生[∙∙∙∙∙∙∙Foo],你实际上会做String.Format("[{0, 10}]", "Foo");
    【解决方案2】:

    当您看到 {x,y} 时,x 表示参数的索引,y 表示对齐方式,指定为 here。完整的语法如下:

    {index[,alignment][:formatString]}
    

    【讨论】:

      【解决方案3】:

      这是一个填充值...如果参数不是指定的长度,它会在其中放置空格。

      例如如果您有 {0,10} 并且 {0} 的参数是“Blah”,则打印的实际值将是 "Blah<SPACE><SPACE><SPACE><SPACE><SPACE><SPACE>"...Blah,另外还有 6 个空格来组成一个长度为 10 的字符串

      ps - 不确定如何将实际空间放入...毫无疑问需要查找 SO faq

      【讨论】:

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