在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
String.Format 方法的几种定义: String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项。
结果为:¥0.20 (英文操作系统结果:$0.20)
结果为:¥23.2 (截取会自动四舍五入)
__
C#中$的用法: 是为了替代string.format();原先赋值需要占位符和变量,当需要拼接多个变量会造成语句过长等不易理解问题,$""是为了替代string.format(),可以把字符串中的C#变量{}包含起来达到识别C#变量的目的$"{id}";也支持表达式,使用$"{(你的表达式)}" var k = "a"; var a0 = "User"; var a1 = "Id"; var a2 = 5; var ccc = string.Format("select * from {0} where {1} = {2}", a0, a1, a2); var ccb = $"select * from {a0} where {a1}={a2}";
当然也支持string.format()里面的格式,如: var k = "a"; var k4 = $"{k,5}"; var k3 = string.Format("{0,5}", k); var k2 = DateTime.Now; var c = $"{k2:yyyy}"; c = string.Format("{0:yyyy}", k2);
1、格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0.20) 默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数 格式化多个Object实例 2、格式化十进制的数字(格式化成固定的位数,位数不能少于未格式化前,只支持整形) string.Format("{0:D3}",23) 结果为:023 string.Format("{0:D2}",1223) 结果为:1223,(精度说明符指示结果字符串中所需的最少数字个数。) 3、用分号隔开的数字,并指定小数点后的位数 string.Format("{0:N}", 14200) 结果为:14,200.00 (默认为小数点后面两位) string.Format("{0:N3}", 14200.2458) 结果为:14,200.246 (自动四舍五入) 4、格式化百分比 string.Format("{0:P}", 0.24583) 结果为:24.58% (默认保留百分的两位小数) string.Format("{0:P1}", 0.24583) 结果为:24.6% (自动四舍五入) 5、零占位符和数字占位符 string.Format("{0:0000.00}", 12394.039) 结果为:12394.04 string.Format("{0:0000.00}", 194.039) 结果为:0194.04 string.Format("{0:###.##}", 12394.039) 结果为:12394.04 string.Format("{0:####.#}", 194.039) 结果为:194 下面的这段说明比较难理解,多测试一下实际的应用就可以明白了。 数字占位符: PS:空格占位符 string.Format("{0,-50}", theObj);//格式化成50个字符,原字符左对齐,不足则补空格 6、日期格式化 string.Format("{0:d}",System.DateTime.Now) 结果为:2009-3-20 (月份位置不是03) string.Format("{0:D}",System.DateTime.Now) 结果为:2009年3月20日 string.Format("{0:f}",System.DateTime.Now) 结果为:2009年3月20日 15:37 string.Format("{0:F}",System.DateTime.Now) 结果为:2009年3月20日 15:37:52 string.Format("{0:g}",System.DateTime.Now) 结果为:2009-3-20 15:38 string.Format("{0:G}",System.DateTime.Now) 结果为:2009-3-20 15:39:27 string.Format("{0:m}",System.DateTime.Now) 结果为:3月20日 string.Format("{0:t}",System.DateTime.Now) 结果为:15:41 string.Format("{0:T}",System.DateTime.Now) 结果为:15:41:50
微软MSDN对string.format的方法说明: 名称 说明 标准数字格式字符串 格式说明符 名称 说明 精度说明符指示所需的小数位数。如果省略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认货币精度。 精度说明符指示结果字符串中所需的最少数字个数。如果需要的话,则用零填充该数字的左侧,以产生精度说明符给定的数字个数。 精度说明符指示小数点后所需的位数。如果省略精度说明符,则使用默认值,即小数点后六位数字。 格式说明符的大小写指示在指数前加前缀“E”还是“e”。指数总是由正号或负号以及最少三位数字组成。如果需要,用零填充指数以满足最少三位数字的要求。 精度说明符指示所需的小数位数。如果忽略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认数值精度。 Byte 或 SByte:3 Int16 或 UInt16:5 Int32 或 UInt32:10 Int64 或 UInt64:19 Single:7 Double:15 Decimal:29 如果用科学记数法表示数字时指数大于 -5 而且小于精度说明符,则使用定点表示法;否则使用科学记数法。如果要求有小数点,并且忽略尾部零,则结果包含小数点。如果精度说明符存在,并且结果的有效数字位数超过指定精度,则通过舍入删除多余的尾部数字。 上述规则有一个例外:如果数字是 Decimal 而且省略精度说明符时。在这种情况下总使用定点表示法并保留尾部零。 使用科学记数法时,如果格式说明符是“G”,结果的指数带前缀“E”;如果格式说明符是“g”,结果的指数带前缀“e”。 精度说明符指示所需的小数位数。如果忽略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认数值精度。 精度说明符指示所需的小数位数。如果忽略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认数值精度。 虽然此处可以存在精度说明符,但它将被忽略。使用此说明符时,往返过程优先于精度。 精度说明符指示结果字符串中所需的最少数字个数。如果需要的话,则用零填充该数字的左侧,以产生精度说明符给定的数字个数。
格式说明符 名称 说明 “00”说明符使得值被舍入到小数点前最近的数字,其中零位总被舍去。例如,用“00”格式化 34.5 将得到值 35。 请注意,如果“0”不是有效数字,此说明符永不显示“0”字符,即使“0”是字符串中唯一的数字。如果“0”是所显示的数字中的有效数字,则显示“0”字符。 “##”格式字符串使得值被舍入到小数点前最近的数字,其中零总被舍去。例如,用“##”格式化 34.5 将得到值 35。 用作小数点分隔符的实际字符由控制格式化的 NumberFormatInfo 的 NumberDecimalSeparator 属性确定。 千位分隔符说明符:如果在两个数字占位符(0 或 #)之间指定一个或多个“,”字符用于设置数字整数位的格式,则在输出的整数部分中每个数字组之间插入一个组分隔符字符。 当前 NumberFormatInfo 对象的 NumberGroupSeparator 和 NumberGroupSizes 属性将确定用作数字组分隔符的字符以及每个数字组的大小。例如,如果使用字符串“#,#”和固定区域性对数字 1000 进行格式化,则输出为“1,000”。 数字比例换算说明符:如果在紧邻显式或隐式小数点的左侧指定一个或多个“,”字符,则每出现一个数字比例换算说明符便将要格式化的数字除以 1000。例如,如果使用字符串“0,,”对数字 1000000000 进行格式化,则输出为“100”。 可以在同一格式字符串中使用千位分隔符说明符和数字比例换算说明符。例如,如果使用字符串“#,0,,”和固定区域性对数字 10000000000 进行格式化,则输出为“1,000”。 E+0 E-0 e0 e+0 e-0 在某些语言中,转义符本身用作文本时必须跟在转义符之后。否则,编译器将该字符理解为转义符。使用字符串“\\”显示“\”。 请注意,Visual Basic 中不支持此转义符,但是 ControlChars 提供相同的功能。 "ABC"
格式说明符 名称 说明 例如,用于固定区域性的自定义格式字符串为“MM/dd/yyyy”。 例如,用于固定区域性的自定义格式字符串为“dddd, dd MMMM yyyy”。 例如,用于固定区域性的自定义格式字符串为“dddd, dd MMMM yyyy HH:mm:ss”。 例如,用于固定区域性的自定义格式字符串为“MMMM dd”。 自定义格式字符串为“yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK”。 用于此说明符的模式是定义的标准。因此,无论所使用的区域性或所提供的格式提供程序是什么,它总是相同的。 定义格式字符串为“ddd, dd MMM yyyy HH':'mm':'ss 'GMT'”。 格式化不会修改正在格式化的 DateTime 对象的值。因此,应用程序在使用此格式说明符之前必须将该值转换为协调世界时 (UTC)。 自定义格式字符串为“yyyy'-'MM'-'dd'T'HH':'mm':'ss”。 例如,用于固定区域性的自定义格式字符串为“HH:mm”。 例如,用于固定区域性的自定义格式字符串为“HH:mm:ss”。 自定义格式字符串为“yyyy'-'MM'-'dd HH':'mm':'ss'Z'”。 格式化日期和时间时不进行时区转换。因此,应用程序在使用此格式说明符之前必须将本地日期和时间转换为协调世界时 (UTC)。 此模式与完整日期/长时间 (F) 模式相同。但是,格式化将作用于等效于正在格式化的 DateTime 对象的协调世界时 (UTC)。 例如,用于固定区域性的自定义格式字符串为“yyyy MMMM”。
格式说明符 说明 请注意,如果“f”格式说明符单独使用,没有其他格式说明符,则该说明符被看作是“f”标准 DateTime 格式说明符(完整日期/时间模式)。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。 将此格式说明符与 ParseExact 或 TryParseExact 方法一起使用时,所用“f”格式说明符的数目指示要分析的秒部分的最高有效位位数。 将此格式说明符与 ParseExact 或 TryParseExact 方法一起使用时,所用“F”格式说明符的数目指示要分析的秒部分的最高有效位最大位数。 请注意,对于年份可以为五位数的泰国佛历,此格式说明符将显示全部五位数。 请注意,对于年份可以为五位数的泰国佛历,此格式说明符将呈现全部五位数。 如果存在额外的“y”说明符,则用所需个数的前导零填充该数字使之达到“y”说明符的数目。 偏移量始终显示为带有前导符号。加号 (+) 指示小时数早于 GMT,减号 (-) 指示小时数迟于 GMT。偏移量范围为 –12 至 +13。一位数字的偏移量设置为不带前导零的格式。偏移量受夏时制影响。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。 偏移量始终显示为带有前导符号。加号 (+) 指示小时数早于 GMT,减号 (-) 指示小时数迟于 GMT。偏移量范围为 –12 至 +13。一位数字的偏移量设置为带前导零的格式。偏移量受夏时制影响。 偏移量始终显示为带有前导符号。加号 (+) 指示小时数早于 GMT,减号 (-) 指示小时数迟于 GMT。偏移量范围为 –12 至 +13。一位数字的偏移量设置为带前导零的格式。偏移量受夏时制影响。
格式字符串 结果
1、格式化货币(跟系统的环境有关,中文系统默认格式化人民币,英文系统格式化美元) string.Format("{0:C}",0.2) 结果为:¥0.20 (英文操作系统结果:$0.20) 默认格式化小数点后面保留两位小数,如果需要保留一位或者更多,可以指定位数 格式化多个Object实例 2、格式化十进制的数字(格式化成固定的位数,位数不能少于未格式化前,只支持整形) string.Format("{0:D3}",23) 结果为:023 string.Format("{0:D2}",1223) 结果为:1223,(精度说明符指示结果字符串中所需的最少数字个数。) 3、用分号隔开的数字,并指定小数点后的位数 string.Format("{0:N}", 14200) 结果为:14,200.00 (默认为小数点后面两位) string.Format("{0:N3}", 14200.2458) 结果为:14,200.246 (自动四舍五入) 4、格式化百分比 string.Format("{0:P}", 0.24583) 结果为:24.58% (默认保留百分的两位小数) string.Format("{0:P1}", 0.24583) 结果为:24.6% (自动四舍五入) 5、零占位符和数字占位符 string.Format("{0:0000.00}", 12394.039) 结果为:12394.04 string.Format("{0:0000.00}", 194.039) 结果为:0194.04 string.Format("{0:###.##}", 12394.039) 结果为:12394.04 string.Format("{0:####.#}", 194.039) 结果为:194 下面的这段说明比较难理解,多测试一下实际的应用就可以明白了。 数字占位符: PS:空格占位符 string.Format("{0,-50}", theObj);//格式化成50个字符,原字符左对齐,不足则补空格 6、日期格式化 string.Format("{0:d}",System.DateTime.Now) 结果为:2009-3-20 (月份位置不是03) string.Format("{0:D}",System.DateTime.Now) 结果为:2009年3月20日 string.Format("{0:f}",System.DateTime.Now) 结果为:2009年3月20日 15:37 string.Format("{0:F}",System.DateTime.Now) 结果为:2009年3月20日 15:37:52 string.Format("{0:g}",System.DateTime.Now) 结果为:2009-3-20 15:38 string.Format("{0:G}",System.DateTime.Now) 结果为:2009-3-20 15:39:27 string.Format("{0:m}",System.DateTime.Now) 结果为:3月20日 string.Format("{0:t}",System.DateTime.Now) 结果为:15:41 string.Format("{0:T}",System.DateTime.Now) 结果为:15:41:50
微软MSDN对string.format的方法说明: 名称 说明 标准数字格式字符串 格式说明符 名称 说明 精度说明符指示所需的小数位数。如果省略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认货币精度。 精度说明符指示结果字符串中所需的最少数字个数。如果需要的话,则用零填充该数字的左侧,以产生精度说明符给定的数字个数。 精度说明符指示小数点后所需的位数。如果省略精度说明符,则使用默认值,即小数点后六位数字。 格式说明符的大小写指示在指数前加前缀“E”还是“e”。指数总是由正号或负号以及最少三位数字组成。如果需要,用零填充指数以满足最少三位数字的要求。 精度说明符指示所需的小数位数。如果忽略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认数值精度。 Byte 或 SByte:3 Int16 或 UInt16:5 Int32 或 UInt32:10 Int64 或 UInt64:19 Single:7 Double:15 Decimal:29 如果用科学记数法表示数字时指数大于 -5 而且小于精度说明符,则使用定点表示法;否则使用科学记数法。如果要求有小数点,并且忽略尾部零,则结果包含小数点。如果精度说明符存在,并且结果的有效数字位数超过指定精度,则通过舍入删除多余的尾部数字。 上述规则有一个例外:如果数字是 Decimal 而且省略精度说明符时。在这种情况下总使用定点表示法并保留尾部零。 使用科学记数法时,如果格式说明符是“G”,结果的指数带前缀“E”;如果格式说明符是“g”,结果的指数带前缀“e”。 精度说明符指示所需的小数位数。如果忽略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认数值精度。 精度说明符指示所需的小数位数。如果忽略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认数值精度。 虽然此处可以存在精度说明符,但它将被忽略。使用此说明符时,往返过程优先于精度。 精度说明符指示结果字符串中所需的最少数字个数。如果需要的话,则用零填充该数字的左侧,以产生精度说明符给定的数字个数。
格式说明符 名称 说明 “00”说明符使得值被舍入到小数点前最近的数字,其中零位总被舍去。例如,用“00”格式化 34.5 将得到值 35。 请注意,如果“0”不是有效数字,此说明符永不显示“0”字符,即使“0”是字符串中唯一的数字。如果“0”是所显示的数字中的有效数字,则显示“0”字符。 “##”格式字符串使得值被舍入到小数点前最近的数字,其中零总被舍去。例如,用“##”格式化 34.5 将得到值 35。 用作小数点分隔符的实际字符由控制格式化的 NumberFormatInfo 的 NumberDecimalSeparator 属性确定。 千位分隔符说明符:如果在两个数字占位符(0 或 #)之间指定一个或多个“,”字符用于设置数字整数位的格式,则在输出的整数部分中每个数字组之间插入一个组分隔符字符。 当前 NumberFormatInfo 对象的 NumberGroupSeparator 和 NumberGroupSizes 属性将确定用作数字组分隔符的字符以及每个数字组的大小。例如,如果使用字符串“#,#”和固定区域性对数字 1000 进行格式化,则输出为“1,000”。 数字比例换算说明符:如果在紧邻显式或隐式小数点的左侧指定一个或多个“,”字符,则每出现一个数字比例换算说明符便将要格式化的数字除以 1000。例如,如果使用字符串“0,,”对数字 1000000000 进行格式化,则输出为“100”。 可以在同一格式字符串中使用千位分隔符说明符和数字比例换算说明符。例如,如果使用字符串“#,0,,”和固定区域性对数字 10000000000 进行格式化,则输出为“1,000”。 E+0 E-0 e0 e+0 e-0 在某些语言中,转义符本身用作文本时必须跟在转义符之后。否则,编译器将该字符理解为转义符。使用字符串“\\”显示“\”。 请注意,Visual Basic 中不支持此转义符,但是 ControlChars 提供相同的功能。 "ABC"
格式说明符 名称 说明 例如,用于固定区域性的自定义格式字符串为“MM/dd/yyyy”。 例如,用于固定区域性的自定义格式字符串为“dddd, dd MMMM yyyy”。 例如,用于固定区域性的自定义格式字符串为“dddd, dd MMMM yyyy HH:mm:ss”。 例如,用于固定区域性的自定义格式字符串为“MMMM dd”。 自定义格式字符串为“yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK”。 用于此说明符的模式是定义的标准。因此,无论所使用的区域性或所提供的格式提供程序是什么,它总是相同的。 定义格式字符串为“ddd, dd MMM yyyy HH':'mm':'ss 'GMT'”。 格式化不会修改正在格式化的 DateTime 对象的值。因此,应用程序在使用此格式说明符之前必须将该值转换为协调世界时 (UTC)。 自定义格式字符串为“yyyy'-'MM'-'dd'T'HH':'mm':'ss”。 例如,用于固定区域性的自定义格式字符串为“HH:mm”。 例如,用于固定区域性的自定义格式字符串为“HH:mm:ss”。 自定义格式字符串为“yyyy'-'MM'-'dd HH':'mm':'ss'Z'”。 格式化日期和时间时不进行时区转换。因此,应用程序在使用此格式说明符之前必须将本地日期和时间转换为协调世界时 (UTC)。 此模式与完整日期/长时间 (F) 模式相同。但是,格式化将作用于等效于正在格式化的 DateTime 对象的协调世界时 (UTC)。 例如,用于固定区域性的自定义格式字符串为“yyyy MMMM”。
格式说明符 说明 请注意,如果“f”格式说明符单独使用,没有其他格式说明符,则该说明符被看作是“f”标准 DateTime 格式说明符(完整日期/时间模式)。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符。 将此格式说明符与 ParseExact 或 TryParseExact 方法一起使用时,所用“f”格式说明符的数目指示要分析的秒部分的最高有效位位数。 将此格式说明符与 ParseExact 或 TryParseExact 方法一起使用时,所用“F”格式说明符的数目指示要分析的秒部分的最高有效位最大位数。 请注意,对于年份可以为五位数的泰国佛历,此格式说明符将显示全部五位数。 请注意,对于年份可以为五位数的泰国佛历,此格式说明符将呈现全部五位数。 如果存在额外的“y”说明符,则用所需个数的前导零填充该数字使之达到“y”说明符的数目。 偏移量始终显示为带有前导符号。加号 (+) 指示小时数早于 GMT,减号 (-) 指示小时数迟于 GMT。偏移量范围为 –12 至 +13。一位数字的偏移量设置为不带前导零的格式。偏移量受夏时制影响。有关使用单个格式说明符的更多信息,请参见使用单个自定义格式说明符 |
请发表评论