自定义格式化字符串

 1 public class Vector : IFormattable
 2     {
 3         public double X { get; set; }
 4         public double Y { get; set; }
 5         public double Z { get; set; }
 6
 7         public double Norm()
 8         {
 9             return X * X + Y * Y + Z * Z;
10         }
11
12         public override string ToString()
13         {
14             return "(" + X + "," + Y + "," + Z + ")";
15         }
16
17         public string ToString(string format, IFormatProvider formatProvider)
18         {
19             if (format == null)
20             {
21                 return ToString();
22             }
23
24             string formatUpper = format.ToUpper();
25
26             switch (formatUpper)
27             {
28                 case "N":
29                     return "|| " + Norm().ToString() + " ||";
30                 case "VE":
31                     return string.Format("({0:E},{1:E},{2:E})", X, Y, Z);
32                 case "IJK":
33                     var sb = new StringBuilder(X.ToString(), 30);
34                     sb.AppendFormat(" i + ");
35                     sb.AppendFormat(Y.ToString());
36                     sb.AppendFormat(" j + ");
37                     sb.AppendFormat(Z.ToString());
38                     sb.AppendFormat(" k");
39                     return sb.ToString();
40                 default:
41                     return ToString();
42             }
43         }
44     }
1 static void Main(string[] args)
2         {
3             Vector vector1 = new Vector { X = 3, Y = 4, Z = 5 };
4             Vector vector2 = new Vector { X = 5, Y = 4, Z = 3 };
5             Console.WriteLine("In IJK format, v1 is {0,10:IJK},V2 is {1,10:IJK}", vector1, vector2);
6
7
8             Console.ReadKey();
9         }
时间: 2024-10-31 13:16:41

自定义格式化字符串的相关文章

JS在HTML自定义格式化字符串的方法

python中有format方法对字符串进行格式化 JS中可以通过自定义的方法来实现 1 String.prototype.Format = function (args) { 2 /*this代表要调用Format方法的字符串*/ 3 /*replace的第一个参数为正则表达式,g表示处理匹配到的所有字符串,在js中使用//包起来*/ 4 /*replace的第二个参数为匹配字符串的处理,k1匹配结果包含{},k2只保留{}内的内容,g代表匹配所有*/ 5 return this.replac

自定义日期格式化字符串里有个坑,昨晚坑掉我们半夜的时间

(先吐槽一下,刚才新添加随笔的时候居然没有出现编辑器工具,结果文章保存后没有任何排版格式,不是我故意不分段啊.) 昨天晚上很悲催,忙到半夜12点多,最后才发现是被日期时间格式化的时间格式说明符给坑了. 事情的起因很简单,页面上有个datawindow控件要接受一个日期字符串来刷新数据,本地测试怎么测都妥妥的,数据该刷多少刷多少,该新增多少就新增多少:但是部署到服务器上之后就邪乎了,数据可以新增,但是计算值都为零. 由于该控件下新增的数据要用先刷新出来的数据做基础进行运算,所以一开始我们以为是计算

编写高质量代码改善C#程序的157个建议——建议13: 为类型输出格式化字符串

建议13: 为类型输出格式化字符串 有两种方法可以为类型提供格式化的字符串输出.一种是意识到类型会产生格式化字符串输出,于是让类型继承接口IFormattable.这对类型来 说,是一种主动实现的方式,要求开发者可以预见类型在格式化方面的要求.更多的时候,类型的使用者需为类型自定义格式化器,这就是第二种方法,也是最灵活 多变的方法,可以根据需求的变化为类型提供多个格式化器.下面就来详细介绍这两种方法. 最简单的字符串输出是为类型重写ToString方法,如果没有为类型重写该方法,默认会调用Obj

使用IFormattable实现自定义格式字符串输出

IFormattable接口提供了ToString()方法的定义,使用该方法可以将对象的值按照指定的格式转化成字符串的功能. 下面是ToString()方法的完整定义. string ToString( string format, IFormatProvider formatProvider ) 其中: 第一个参数告诉方法需要何种格式的输出,而第二个IFormatProvider的参数则允许类型的使用者自定义格式化方法,在本文实现的ToString()方法中,并没有使用到第二个参数.关于IFo

冒泡算法,递归,正则表达式,模块,格式化字符串的整理

一.冒泡排序原理整理图 二.递归流程图剖析 三.正则表达式内容整理 1.re模块:python中re模块提供了正则表达式相关操作 2.元字符的整理 .  ^  $  *  +  ?  {}  []  |  \ 3.   .   匹配除换行符以外的任意字符(可以通过加参数re.S匹配上换行符) \w 匹配字母或数字或下划线或汉字 \s  匹配任意的空白符 \d  匹配数字 \b  匹配单词的开始或结束 ^   匹配字符串的开始 $  匹配字符串的结束 4.   * 重复零次或更多次(常用的) +

C#格式化字符串大全

1.格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0.20) 默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数 string.Format("{0:C1}",23.15) 结果为:¥23.2 (截取会自动四舍五入) 格式化多个Object实例 string.Format("市场价:{0:C},优惠价{1:C

string.format格式化字符串中转义大括号“{}”

用C#写程序操作Excel,读取单元格内容根据所需格式生成字符串,使用String.Format(string format,object arg0)方法.以前只知"{0}"为索引占位符(即格式项),与参数列表中的第一个对象相对应,格式设置过程将每个格式项替换为对应对象的值的文本表示形式.但这次需将参数对象格式成一对大括号括起来的格式,即返回字符串"{对象arg0的文本表示形式}". //直接加大括号 String.Format("{{0}}",

C#格式化字符串中转义大括号“{}”

原文:C#格式化字符串中转义大括号"{}" 今天,用C#写程序操作Excel,读取单元格内容根据所需格式生成字符串,使用String.Format(string format,object arg0)方法.以前只知"{0}"为索引占位符(即格式项),与参数列表中的第一个对象相对应,格式设置过程将每个格式项替换为对应对象的值的文本表示形式.但这次需将参数对象格式成一对大括号括起来的格式,即返回字符串"{对象arg0的文本表示形式}". [cshar

自定义的字符串类型

自定义字符串对象,继承于动态数组模板类(动态数组模板类实现了内存管理,可减少内存分配和内存拷贝,优化追加数组等,参考http://blog.csdn.net/chenjiayi_yun/article/details/44752051),重载了字符串常用的追加字符串.格式化字符串.字符串比较等操作. 类头文件,如下: class AnsiString : public Array<char> { public: typedef Array<char> super; public: