c#格式化字符串 toString()

发布时间 2023-08-07 11:20:28作者: Jacob·雅各布

1、使用 ToString 方法的默认格式设置

public class Automobile
{
    public string Name { get; set; } = "小王";
}
Automobile firstAuto = new Automobile();
Console.WriteLine(firstAuto.ToString());

2、重写ToString

public class Automobile2
{

    public string Name { get; set; } = "小王";
    public override string ToString()
    {
        return Name;
    }
}
Automobile2 firstAuto2 = new Automobile2();
Console.WriteLine(firstAuto2.ToString());

3、枚举格式字符串

    DayOfWeek thisDay = DayOfWeek.Monday;
    string[] formatStrings = { "G", "F", "D", "X" };
    foreach (string formatString in formatStrings)
        Console.WriteLine(thisDay.ToString(formatString));
    //
    //    public enum DayOfWeek
    //{
    //    //
    //    // 摘要:
    //    //     表示星期日。
    //    Sunday = 0,
    //    //
    //    // 摘要:
    //    //     表示星期一。
    //    Monday = 1,
    //    //
    //    // 摘要:
    //    //     表示星期二。
    //    Tuesday = 2,
    //    //
    //    // 摘要:
    //    //     表示星期三。
    //    Wednesday = 3,
    //    //
    //    // 摘要:
    //    //     表示星期四。
    //    Thursday = 4,
    //    //
    //    // 摘要:
    //    //     表示星期五。
    //    Friday = 5,
    //    //
    //    // 摘要:
    //    //     表示星期六。
    //    Saturday = 6
    //}
    //g  枚举成员的字符串表示
    //f  枚举成员的字符串表示
    //d  十进制表示
    //x  十六进制表示

4、标准数字格式字符串

    float number1 = 123.456f;
    Console.WriteLine(number1.ToString("c"));//默认保留两位的货币表示
    Console.WriteLine(number1.ToString("c5"));
    Console.WriteLine(number1.ToString("c1"));//保留小数点后几位的货币表示
    int number2 = 123;
    Console.WriteLine(number2.ToString("d"));
    Console.WriteLine(number2.ToString("d5"));
    Console.WriteLine(number2.ToString("d1"));// 十进制(“D”)格式说明符,总共保留多少位的十进制数,如果位数不足,则在前面补0,只能用于整数

    float number3 = 123.456f;
    Console.WriteLine(number3.ToString("e"));//指数计数法,默认小数点后六位
    Console.WriteLine(number3.ToString("e1"));//指数计数法,默认小数点后1位
    Console.WriteLine(number3.ToString("e2"));//指数计数法,默认小数点后2位

    float number4 = 123.4566f;
    Console.WriteLine(number4.ToString("f"));//保留小数后2位,并且进行了四舍五入
    Console.WriteLine(number4.ToString("f1"));//保留小数后1位
    Console.WriteLine(number4.ToString("f3"));//保留小数后3位

    float number5 = 123.4566f;
    Console.WriteLine(number5.ToString("g"));//保留所有数据
    Console.WriteLine(number5.ToString("g1"));//保留1位有效位,不足以表示的,使用指数表示
    Console.WriteLine(number5.ToString("g3"));//保留3位有效位

    float number6 = 12557.4566f;
    Console.WriteLine(number6.ToString("n"));//保留小数点后两位,和f相比的话,差别在于整数部分超过3位时,用逗号分隔显示
    Console.WriteLine(number6.ToString("n1"));//保留1位有效位,不足以表示的,使用指数表示
    Console.WriteLine(number6.ToString("n4"));//保留3位有效位

    float number7 = 0.4566f;
    Console.WriteLine(number7.ToString("p"));//保留小数点后两位,并进行百分比显示
    Console.WriteLine(number7.ToString("p1"));//保留小数点后1位,并进行百分比显示
    Console.WriteLine(number7.ToString("p4"));//保留小数点后4位,并进行百分比显示

    int number8 = 255;
    Console.WriteLine(number8.ToString("x"));//以两位16进制表示
    Console.WriteLine(number8.ToString("x4"));//以4位16进制表示,不足的部分,在前面补0
    Console.WriteLine(number8.ToString("x6"));//以6位16进制表示,不足的部分,在前面补0

5、 自定义数字格式字符串

    double value = 12345.3456;
    Console.WriteLine(value.ToString("000.00"));//没有零的地方补上零,并且控制了小数点后的位数
    Console.WriteLine(String.Format("{0:000.00}", value));
    Console.WriteLine(value.ToString("###.#####"));//没有#的地方,则不显示
    Console.WriteLine(String.Format("{0:###.#####}", value));

6、标准日期和时间格式字符串

    DateTime dateTime = DateTime.Now;
    Console.WriteLine(dateTime.ToString("d"));//年月日
    Console.WriteLine(dateTime.ToString("D"));//年月日
    Console.WriteLine(dateTime.ToString("f"));//年月日,时分
    Console.WriteLine(dateTime.ToString("F"));//年月日,时分秒

    Console.WriteLine(dateTime.ToString("g"));//年月日,时分
    Console.WriteLine(dateTime.ToString("G"));//年月日,时分秒

    Console.WriteLine(dateTime.ToString("m"));//月日
    Console.WriteLine(dateTime.ToString("M"));//月日

    Console.WriteLine(dateTime.ToString("o"));//
    Console.WriteLine(dateTime.ToString("O"));//

    Console.WriteLine(dateTime.ToString("r"));//
    Console.WriteLine(dateTime.ToString("R"));//

    Console.WriteLine(dateTime.ToString("s"));//


    Console.WriteLine(dateTime.ToString("t"));//只显示时间,时分
    Console.WriteLine(dateTime.ToString("T"));//只显示时间,时分秒

    Console.WriteLine(dateTime.ToString("u"));//
    Console.WriteLine(dateTime.ToString("U"));//


    Console.WriteLine(dateTime.ToString("y"));//年月
    Console.WriteLine(dateTime.ToString("Y"));//年月

7、 自定义日期和时间格式字符串

    DateTime date1 = new DateTime(2008, 8, 29, 19, 27, 15,789);
    Console.WriteLine(date1.ToString("d,M",//一个月中的某一天表示为从 1 到 31 的数字
                      CultureInfo.InvariantCulture));
    Console.WriteLine(date1.ToString("dd,M",//一个月中的某一天表示为从 1 到 31 的数字,不满两位数补零
                     CultureInfo.InvariantCulture));

    Console.WriteLine(date1.ToString("ddd,M",//一个星期中的某一天,简写
                     CultureInfo.InvariantCulture));
    Console.WriteLine(date1.ToString("dddd,M",//一个星期中的某一天,全称
                     CultureInfo.InvariantCulture));
    Console.WriteLine(date1.ToString("hh:mm:ss.f"));//f代表毫秒的最高位,一个f代表
    Console.WriteLine(date1.ToString("hh:mm:ss.ff"));
    Console.WriteLine(date1.ToString("hh:mm:ss.fff"));//f代表毫秒的最高位,3个f代表所有毫秒
    Console.WriteLine(DateTime .Now .ToString ("yyyy-MM-dd:hh-mm-ss-fff"));//h代表12小时计时
    Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd:hh-mm-ss-fff"));//H代表24小时计时
    Console.WriteLine(DateTime.Now.ToString("yyyy/MM/dd:hh-mm-ss-fff"));//H代表24小时计时