Convert.ToByte 方法 (String, Int32)
value 中数字的基数,它必须是 2、8、10 或 16。
MSDN

string.Format的转义符是{}
string.Format("Hello, {{Rodolfo}}. Im {0}", "Lanny");
输出:
Hello,{Rodolfo}, Im Lanny

ToString("format")
C 货币 2.5.ToString("C") ¥2.50  
D 十进制数 25.ToString("D5") 00025
E 科学型 25000.ToString("E") 2.500000E+005
F 固定点 25.ToString("F2") 25.00
G 常规 2.5.ToString("G") 2.5
N 数字 2500000.ToString("N") 2,500,000.00
X 十六进制 255.ToString("X") FF
外部链接

string.Format格式符汇总
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}",23.15,19.82)
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 
下面的这段说明比较难理解,多测试一下实际的应用就可以明白了。
零占位符:
如果格式化的值在格式字符串中出现“0”的位置有一个数字,则此数字被复制到结果字符串中。小数点前最左边的“0”的位置和小数点后最右边的“0”的位置确定总在结果字符串中出现的数字范围。
“00”说明符使得值被舍入到小数点前最近的数字,其中零位总被舍去。
数字占位符:
如果格式化的值在格式字符串中出现“#”的位置有一个数字,则此数字被复制到结果字符串中。否则,结果字符串中的此位置不存储任何值。
请注意,如果“0”不是有效数字,此说明符永不显示“0”字符,即使“0”是字符串中唯一的数字。如果“0”是所显示的数字中的有效数字,则显示“0”字符。
“##”格式字符串使得值被舍入到小数点前最近的数字,其中零总被舍去。
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
str = string.Format("{0:y yy yyy yyyy}", dt); //10 10 2010 2010
str = String.Format("{0:M MM MMM MMMM}", dt); //10 10 十月 十月
str = String.Format("{0:d dd ddd dddd}", dt); //4 04 周一 星期一
str = String.Format("{0:h hh H HH}", dt);   // 5 05 17 17
str = String.Format("{0:m mm}", dt);  //8 08
str = String.Format("{0:s ss}", dt);  //3 03
str = String.Format("{0:f ff fff ffff}", dt);  //9 95 953 9530
str = String.Format("{0:F FF FFF FFFF}", dt);  //9 95 953 953
str = String.Format("{0:t tt}", dt);  //下 下午
str = String.Format("{0:z zz zzz}", dt);  //+8 +08 +08:00
str = String.Format("{0:d/M/yyyy HH:mm:ss}", dt); //4-10-2010 17:16:50
str = String.Format("{0:M/d/yyyy}", dt);    //10-4-2010
str = String.Format("{0:MM/dd/yyyy}", dt);          //10-04-2010
str = String.Format("{0:ddd, MMM d, yyyy}", dt);    //周一, 十月 4, 2010
str = String.Format("{0:dddd, MMMM d, yyyy}", dt);  //星期一, 十月 4, 2010
str = String.Format("{0:MM/dd/yy}", dt);            //10-04-10
str = String.Format("{0:MM/dd/yyyy}", dt);          //10-04-2010
str = String.Format("{0:t}", dt);  //17:29
str = String.Format("{0:d}", dt);  //2010-10-4
str = String.Format("{0:T}", dt);  //17:29:59
str = String.Format("{0:D}", dt);  //2010年10月4日
str = String.Format("{0:f}", dt);  //2010年10月4日 17:30
str = String.Format("{0:F}", dt);  //2010年10月4日 17:31:11
str = String.Format("{0:g}", dt);  //2010-10-4 17:35
str = String.Format("{0:G}", dt);  //2010-10-4 17:36:18
str = String.Format("{0:m}", dt);  //10月4日
str = String.Format("{0:y}", dt);  //2010年10月
str = String.Format("{0:r}", dt);  //Mon, 04 Oct 2010 17:37:25 GMT
str = String.Format("{0:s}", dt);  //2010-10-04T17:37:43
str = String.Format("{0:u}", dt);  //2010-10-04 17:38:01Z
微软MSDN对string.format的方法说明: 
名称 说明
String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项。
String.Format (String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的文本等效项。
String.Format (IFormatProvider, String, Object[]) 将指定 String 中的格式项替换为指定数组中相应 Object 实例的值的文本等效项。指定的参数提供区域性特定的格式设置信息。
String.Format (String, Object, Object) 将指定的 String 中的格式项替换为两个指定的 Object 实例的值的文本等效项。
String.Format (String, Object, Object, Object) 将指定的 String 中的格式项替换为三个指定的 Object 实例的值的文本等效项。
标准数字格式字符串
格式说明符 名称 说明
C 或 c
货币
数字转换为表示货币金额的字符串。转换由当前 NumberFormatInfo 对象的货币格式信息控制。
精度说明符指示所需的小数位数。如果省略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认货币精度。
D 或 d
十进制数
只有整型才支持此格式。数字转换为十进制数字 (0-9) 的字符串,如果数字为负,则前面加负号。
精度说明符指示结果字符串中所需的最少数字个数。如果需要的话,则用零填充该数字的左侧,以产生精度说明符给定的数字个数。
E 或 e
科学记数法(指数)
数字转换为“-d.ddd…E+ddd”或“-d.ddd…e+ddd”形式的字符串,其中每个“d”表示一个数字 (0-9)。如果该数字为负,则该字符串以减号开头。小数点前总有一个数字。
精度说明符指示小数点后所需的位数。如果省略精度说明符,则使用默认值,即小数点后六位数字。
格式说明符的大小写指示在指数前加前缀“E”还是“e”。指数总是由正号或负号以及最少三位数字组成。如果需要,用零填充指数以满足最少三位数字的要求。
F 或 f
定点
数字转换为“-ddd.ddd…”形式的字符串,其中每个“d”表示一个数字 (0-9)。如果该数字为负,则该字符串以减号开头。
精度说明符指示所需的小数位数。如果忽略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认数值精度。
G 或 g
常规
根据数字类型以及是否存在精度说明符,数字会转换为定点或科学记数法的最紧凑形式。如果精度说明符被省略或为零,则数字的类型决定默认精度,如下表所示。
Byte 或 SByte:3
Int16 或 UInt16:5
Int32 或 UInt32:10
Int64 或 UInt64:19
Single:7
Double:15
Decimal:29
如果用科学记数法表示数字时指数大于 -5 而且小于精度说明符,则使用定点表示法;否则使用科学记数法。如果要求有小数点,并且忽略尾部零,则结果包含小数点。如果精度说明符存在,并且结果的有效数字位数超过指定精度,则通过舍入删除多余的尾部数字。
上述规则有一个例外:如果数字是 Decimal 而且省略精度说明符时。在这种情况下总使用定点表示法并保留尾部零。
使用科学记数法时,如果格式说明符是“G”,结果的指数带前缀“E”;如果格式说明符是“g”,结果的指数带前缀“e”。
N 或 n
数字
数字转换为“-d,ddd,ddd.ddd…”形式的字符串,其中“-”表示负数符号(如果需要),“d”表示数字 (0-9),“,”表示数字组之间的千位分隔符,“.”表示小数点符号。实际的负数模式、数字组大小、千位分隔符以及十进制分隔符由当前 NumberFormatInfo 对象指定。
精度说明符指示所需的小数位数。如果忽略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认数值精度。
P 或 p
百分比
数字转换为由 NumberFormatInfo.PercentNegativePattern 或 NumberFormatInfo.PercentPositivePattern 属性定义的、表示百分比的字符串,前者用于数字为负的情况,后者用于数字为正的情况。已转换的数字乘以 100 以表示为百分比。
精度说明符指示所需的小数位数。如果忽略精度说明符,则使用当前 NumberFormatInfo 对象给定的默认数值精度。
R 或 r
往返过程
只有 Single 和 Double 类型支持此格式。往返过程说明符保证转换为字符串的数值再次被分析为相同的数值。使用此说明符格式化数值时,首先使用常规格式对其进行测试:Double 使用 15 位精度,Single 使用 7 位精度。如果此值被成功地分析回相同的数值,则使用常规格式说明符对其进行格式化。但是,如果此值未被成功地分析为相同数值,则它这样格式化:Double 使用 17 位精度,Single 使用 9 位精度。
虽然此处可以存在精度说明符,但它将被忽略。使用此说明符时,往返过程优先于精度。
X 或 x
十六进制数
只有整型才支持此格式。数字转换为十六进制数字的字符串。格式说明符的大小写指示对大于 9 的十六进制数字使用大写字符还是小写字符。例如,使用“X”产生“ABCDEF”,使用“x”产生“abcdef”。
外部链接

通过IFormattable实现自定义格式化参数format
public class Person: IFormattable
{
    public string Name { get; set; }
public override string ToString() 
    {
        return Name;
    }
public string ToString(string format, IFormatProvider formatProvider) 
    {
        if (string.IsNullOrEmpty(format))
            return ToString();
            switch (format)
            {
                case "UPP":
                    return Name.ToUpper();
                case "LOW":
                    return Name.ToLower();
                default:
                    return Name;
            }
    }
}
调试:
var msg10 = string.Format("Hello Cnblogs, I am {0:UPP},Today is {1:yyyy-MM-dd} {2}.",
new Person2() { Name = "ZhezheToUpper" }, DateTime.Now, DateTime.Now.DayOfWeek);
输出:
Hello CnBlogs, I am ZHEZHETOUPPER,Today is 2010--07-30 Friday.
注意,默认情况下输出object会调用ToString(string, IFormatProfider),因此需要增加无格式化参数(即format==null)的情况,并调用重载的ToString()以获得正确的无格式输出。
外部链接

object包含默认的ToString()
.net中的任何对象都具有该方法,因为该方法在object对象中定义,任何类或者结构都会继承object,所以不用担心一个对象没有ToString方法。
但是,输出内容很可能不会让你满意,此时请重载ToString(string, IFormatProvider)

转载于:https://www.cnblogs.com/sunlyk/p/7427285.html

.net String Formatter 格式转换相关推荐

  1. C#中string.format 格式转换用法详解

    String.Format 方法的几种定义: String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项. Str ...

  2. java日期转字符串_Java时间日期格式转换Date转String和String转Date

    1 Java时间格式转换大全2 3 import java.text.*;4 importjava.util.Calendar;5 public classVeDate {6 /** 7 * 获取现在 ...

  3. Java时间日期格式转换Date转String和String转Date

    Java时间格式转换大全 谢谢大神的时间格式转换稿子:https://blog.csdn.net/u010486495/article/details/79260448 查阅后发现没有我想要的,后经人 ...

  4. scala 时间格式转换(String、Long、Date)

    1)scala 时间格式转换(String.Long.Date) 1.时间字符类型转Date类型 [java] view plain copy import java.text.SimpleDateF ...

  5. Java 格式转换:利用格式转换实现随机数生成随机 char 字母及 string 字母串

    文章目录 前言 一.char 型与数值型转换规则 二.随机数生成随机字母 三.随机数生成随机字母串 总结 前言 我们都知道在 Java 语言中有八种基本数据类型,而不同数据类型之间的转换你了解多少呢? ...

  6. scala mysql 数据类型转换_scala 时间格式转换(String、Long、Date)

    1)scala 时间格式转换(String.Long.Date) 1.时间字符类型转Date类型 [java] view plain copy import java.text.SimpleDateF ...

  7. invalid comparison: java.util.Date and java.lang.String“, “data“: null 时间格式转换异常

    时间格式转换异常 查询时间字段: 报错信息:解决方法 结果展示 总结 :这是一个小bug 我们不能直接使用 必须加上date的格式才能展示 修改前:<if test="callTime ...

  8. java定义时间格式大全_Java时间格式转换大全

    package com.date; import java.text.DateFormat; import java.text.ParseException; import java.text.Par ...

  9. java格式_java时间格式转换大全

    Java时间格式转换大全 import java.text.*; import java.util.Calendar; public class VeDate { /** * 获取现在时间 * * @ ...

最新文章

  1. Leetcode#43Multiply Strings
  2. Java基础(五)继承和多态
  3. nginx 文件说明(非文件配置说明)
  4. java自动猜测文件编码
  5. 前端学习(2081):三种方案对比es5没有闭包
  6. Jquery简单的右侧浮动菜单
  7. bind配置文件解析
  8. java线上问题定位_线上java.lang.OutOfMemoryError问题定位三板斧
  9. 素数/质数的判断(C++)
  10. 如何在现代C ++中实现经典排序算法?
  11. docker jenkin下载缓慢_用Docker运行Jenkins自动化构建ASP.NET Core项目
  12. DevExpress WPF初级教程 - 图像选择器的使用
  13. pin码计算器网页版_PIN码计算锦集
  14. linux下编译opendds,Linux下编译OpenDDS
  15. (转)RemapKey等:小巧实用的键盘映射工具
  16. 征途私服mysql启动不了_征途服务器架设需要的LINUX版本
  17. 1553B 协议详解
  18. 计算机网络——IP协议基础原理
  19. 看懂了再说自己是程序员哈哈
  20. Internet Download Manager2023最好用的HTTP下载神器

热门文章

  1. 俄罗斯:国家机构今年已遭1000多万起网络攻击
  2. MFC 对Button控件的重绘方法(多种)
  3. 细说嵌入式Linux文件系统的制作方法
  4. 如何查看系统启动时间-
  5. 蓝桥杯 ALGO-98 算法训练 数位分离
  6. LeetCode199. Binary Tree Right Side View
  7. WebLogic下部署war包
  8. MySQL 时间戳转换成秒
  9. Could not find the main class: org.eclipse.ant.internal.launching.remote.InternalAntRunner. Program
  10. 设计模式之—工厂方法模式