代码之家  ›  专栏  ›  技术社区  ›  Sprintstar

精度说明符作为参数,如printf,但在字符串格式

  •  8
  • Sprintstar  · 技术社区  · 14 年前

    使用printf,我可以使用*将精度值指定为一个额外的参数。C#中是否存在相同的功能字符串。格式?

    例如:

    Console.WriteLine("{0:D*}",1,4); // Outputs 0001
    
    5 回复  |  直到 12 年前
        1
  •  4
  •   Heinzi    14 年前

    不,字符串格式不支持星形运算符。您需要使用字符串连接

    Console.WriteLine("{0:D" + myPrecision.ToString() + "}",1);
    

    或嵌套 String.Format

    Console.WriteLine(String.Format("{{0:D{0}}}", 4), 1);
    
        2
  •  4
  •   Martin Liversage    14 年前

    格式化格式字符串的方法如下:

    var number = 1;
    var width = 4;
    Console.WriteLine(String.Format("{{0:D{0}}}", width), number);
    

    它将输出 0001 .

    注意怎么做 {{ }} 是用来逃跑的 { }

        3
  •  2
  •   JaredPar    14 年前

    Console.WriteLine("{0:D4}",1); // Outputs 0001;
    

    精度修饰符的作用是特定于所选的格式类型的。在这种情况下,D代表十进制输出。这里有一个链接,指向数值格式的类型以及精度对每种格式的意义。

        4
  •  1
  •   sashoalm Yaser Kalali    8 年前

    我的解决方法类似于Qt如何实现 QString::arg() numericPrecision .

    numericPrecision = "N2";
    var summary = string.Format(
        "{0}: {1:_np_}, {2}: {3:_np_}, {4}: {5:_np_}".Replace("_np_", numericPrecision),
        title1, value1,
        title2, value2,
        title3, value3);
    
        5
  •  0
  •   kdahl    9 年前

    格式化按指定长度左对齐的字符串。

    int len = 20;
    string fmt = string.Format( "{{0,-{0}}}", len );
    string name = string.Format( fmt, "a persons name" );
    

    name.PadRight( len );