参见C#高级编程(第4版)第8章 字符串和正则表达式 class Program { static void Main(string[] args) { Vector v1 = new Vector(1, 32, 5); Vector v2 = new Vector(845.4, 54.3, -7.8); Console.WriteLine("\nIn IJK format, \nv1 is {0,30:IJK}\nv2 is {1,30:IJK}", v1, v2); Console.WriteLine("\nIn default format, \nv1 is {0,30}\nv2 is {1,30}", v1, v2); Console.WriteLine("\nIn VE format, \nv1 is {0,30:VE}\nv2 is {1,30:VE}", v1, v2); } } class Vector : IFormattable { private double x, y, z; public Vector(double x, double y, double z) { this.x = x; this.y = y; this.z = z; } public override string ToString() { return "(" + x + ", " + y + ", " + z + ")"; } #region IFormattable Members public string ToString(string format, IFormatProvider formatProvider) { if (format == null) { return ToString(); } string formatUpper = format.ToUpper(); switch (formatUpper) { case "VE": return string.Format("({0:E},{1:E},{2:E})", x, y, z); case "IJK": StringBuilder sb = new StringBuilder(x.ToString(), 30); sb.Append(" i + "); sb.Append(y.ToString()); sb.Append(" j + "); sb.Append(z.ToString()); sb.Append(" k"); return sb.ToString(); default: return ToString(); } } #endregion } 输出结果如下 In IJK format, v1 is 1 i + 32 j + 5 k v2 is 845.4 i + 54.3 j + -7.8 k In default format, v1 is (1, 32, 5) v2 is (845.4, 54.3, -7.8) In VE format, v1 is (1.000000E+000,3.200000E+001,5.000000E+000) v2 is (8.454000E+002,5.430000E+001,-7.800000E+000)

评论