C#----格式化字符串的操作

时间:2023-03-09 09:56:46
C#----格式化字符串的操作
    class Program
{
static void Main(string[] args)
{
//DateTime dt = DateTime.Now;
//Console.WriteLine("{0}", dt);//2014-3-27 10:19:24 原来形式
//Console.WriteLine("{0:d}", dt);//2014-3-27 "d":约束的结果,以短时间输出
//Console.WriteLine("{0:D}", dt);//2014年3月27日星期四 "D":长日期格式
//Console.WriteLine("{0:f}", dt);//2014年3月27日星期四 10:24 "f":完整日期/时间模式(短时间)
//Console.WriteLine("{0:F}", dt);//2014年3月27日星期四 10:25:13 "F":完整日期/时间模式(长时间)
//Console.WriteLine("{0:g}", dt);//2014-3-27 10:26 "g":常规日期/时间模式(短时间)。
//Console.WriteLine("{0:G}", dt);//2014-3-27 10:26:41 "G":常规日期/时间模式(长时间)
//Console.WriteLine("{0:m}", dt);//3月27日 "m":月/日模式。
//Console.WriteLine("{0:M}", dt);//3月27日 "M":月/日模式。
//Console.WriteLine("{0:o}", dt);//2014-03-27T10:29:17.4531250+08:00 "o": 往返日期/时间模式。
//Console.WriteLine("{0:O}", dt);//2014-03-27T10:29:17.4531250+08:00 "O": 往返日期/时间模式。
//Console.WriteLine("{0:r}", dt);//Thu, 27 Mar 2014 10:30:27 GMT "r":RFC1123 模式。
//Console.WriteLine("{0:R}", dt);//Thu, 27 Mar 2014 10:30:27 GMT "R":RFC1123 模式。
//Console.WriteLine("{0:s}", dt);//2014-03-27T10:31:46 "s";可排序日期/时间模式。
//Console.WriteLine("{0:t}", dt);//10:36 "t":短时间模式
//Console.WriteLine("{0:T}", dt);//10:37:40 "T":短时间模式
//Console.WriteLine("{0:u}", dt);//2014-03-27 10:38:53Z "u";通用可排序日期/时间模式。
//Console.WriteLine("{0:U}", dt);//2014年3月27日星期四 02:39:30 "U":通用完整日期/时间模式
//Console.WriteLine("{0:y}", dt);//2014年3月 "y":年月模式
//Console.WriteLine("{0:Y}", dt);//2014年3月 "y":年月模式
//日期和时间自定义模式
//http://msdn.microsoft.com/zh-cn/library/8kb3ddd4%28v=vs.110%29.aspx //数值标准模式
//http://msdn.microsoft.com/zh-cn/library/dwhawy9k%28v=vs.110%29.aspx
//数值自定义模式
//http://msdn.microsoft.com/zh-cn/library/0c899ak8%28v=vs.110%29.aspx double test = 1234.5678;
Console.WriteLine("{0:####}", test);//1235 这是4舍5入了
Console.WriteLine("{0:######.#####}", test);//1234.5678
//Console.Read();
}
}
/*
* 格式化的动作用到部分方法:
* toString()的重载;String.Format();Console.WriteLine();等。
*
* 复合格式(串):
* 我的理解是对字符串的约束和限制,它的实质也是一个字符串。和参数列表配合能很好地约束一个字符串。
* 组成部分:固定文本和格式项。
* 举例1:
* int intCc = 90;
* Console.WriteLine("name={0}",intCc);
* 其中"name={0}"是一个复合格式串,"name="是固定文本,"{0}"是格式项。
* 重点不是固定文本,而是格式项。
* 格式项:
* { index[,alignment][:formatString]} ;
* 组成:索引,对齐,格式字符串。
* 索引:对应index,是参数列表中的第几个参数。index为0,说明对应第一个参数。是从0开始的整数。
* 对齐:对应aliginment,是表示对齐方式的。是一个整数,可以是正的或者负的。对齐值是对目标字符串留下的长度,小于长度时取字符串的长度,大于长度时把字符串放到对齐值表示的长度中。
* 格式字符串:对应FormatString,是一些格式说明,不同的数据类型有不同的使用语法。是格式项中的重点。实质是字符串。
*
* 示例1:
* 正常输出对应项,索引的使用。
* int intCc = 80;
int intDd = 90;
Console.WriteLine("name={0},sex={1}", intCc,intDd);//结果是name=80,sex=90
* 示例2:
* 索引超出范围怎么办?
* int intCc = 80;
int intDd = 90;
Console.WriteLine("name={0},sex={2}", intCc,intDd);//未处理的异常: System.FormatException: 索引(从零开始)必须大于或等于零,且小于参
数列表的大小。
* 示例3:
* 对齐的使用。
* string strTmp = "abcdefg";
Console.WriteLine("{0,6}"+";",strTmp);//右对齐,对齐值6小于字符串长度7,
Console.WriteLine("{0,8}"+";", strTmp);//右对齐,对齐值8大于字符串长度7
Console.WriteLine("{0,-6}"+";", strTmp);//左对齐,对齐值6小于字符串长度7
Console.WriteLine("{0,-8}"+";", strTmp);//左对齐,对齐值8大于字符串长度7
*
* 结果:
* ;abcdefg;
; abcdefg;
;abcdefg;
;abcdefg ;
* 格式字符串的使用:分类有,DateTime类型,数据类型,枚举类型,Guid类型,TimeSpan类型。
* DateTime类型:
* 示例4: