• C# 格式化输出


     

    一、字符串的格式化输出

    1.1 格式化输出表

    字符

    说明

    示例

    输出

    C

    货币

    string.Format("{0:C3}", 2)

    $2.000

    D

    十进制

    string.Format("{0:D3}", 2)

    002

    E

    科学计数法

    string.Format(“{0:e}”,1.2)

    1.20E+001

    G

    常规

    string.Format("{0:G}", 2)

    2

    N

    用分号隔开的数字

    string.Format("{0:N}", 250000)

    250,000.00

    X

    十六进制

    string.Format("{0:X000}", 12)

    C

       

    string.Format("{0:000.000}", 12.2)

    012.200

     

    eg.数字的格式指定

    可以通过往刚才所说的修饰项目中添加几个参数来实现控制数字格式的目的。下表列出了几个常见的例子。

    操作格式 代码 输出
    固定宽度右对齐 String.Format("{0, 4}", num)    1”
    固定宽度左对齐 String.Format("{0, -4}", num) “1  
    用0填充 String.Format("{0:D4}", num)
    或者
    String.Format("{0:0000}", num)
    0001”
    固定宽度并用0填充 String.Format("{0, 8:D4}", num)     0001”

    1.2 Strings

    There really isn't any formatting within a strong, beyond it's alignment. Alignment works for any argument being printed in a String.Format call.

    Sample

    Generates

    String.Format("->{1,10}<-", "Hello");

    -> Hello<-

    String.Format("->{1,-10}<-", "Hello");

    ->Hello <-

    1.3 Numbers

    Basic number formatting specifiers: 

    Specifier

    Type

    Format

    Output
    (Passed
    Double 1.42)

    Output
    (Passed
    Int -12400)

    c

    Currency

    {0:c}

    $1.42

    -$12,400

    d

    Decimal (Whole number)

    {0:d}

    System.
    FormatException

    -12400

    e

    Scientific

    {0:e}

    1.420000e+000

    -1.240000e+004

    f

    Fixed point

    {0:f}

    1.42

    -12400.00

    g

    General

    {0:g}

    1.42

    -12400

    n

    Number with commas for thousands

    {0:n}

    1.42

    -12,400

    r

    Round trippable

    {0:r}

    1.42

    System.
    FormatException

    x

    Hexadecimal

    {0:x4}

    System.
    FormatException

    cf90

    Custom number formatting ( Passed Double 1500.42 ) :

    Specifier

    Type

    Example

    Output

    Note

    0

    Zero placeholder

    {0:00.0000}

    1500.4200

    Pads with zeroes.

    #

    Digit placeholder

    {0:(#).##}

    (1500).42

     

    .

    Decimal point

    {0:0.0}

    1500.4

     

    ,

    Thousand separator

    {0:0,0}

    1,500

    Must be between two zeroes.

    ,.

    Number scaling

    {0:0,.}

    2

    Comma adjacent to Period scales by 1000.

    %

    Percent

    {0:0%}

    150042%

    Multiplies by 100, adds % sign.

    e

    Exponent placeholder

    {0:00e+0}

    15e+2

    Many exponent formats available.

    ;

    Group separator

    see below

     

     

     

    The group separator is especially useful for formatting currency values which require that negative values be enclosed in parentheses. This currency formatting example at the bottom of this document makes it obvious:

    1.4 Dates

    Note that date formatting is especially dependant on the system's regional settings; the example strings here are from my local locale.

    Specifier

    Type

    Example (Passed System.DateTime.Now)

    d

    Short date

    10/12/2002

    D

    Long date

    December 10, 2002

    t

    Short time

    10:11 PM

    T

    Long time

    10:11:29 PM

    f

    Full date & time

    December 10, 2002 10:11 PM

    F

    Full date & time (long)

    December 10, 2002 10:11:29 PM

    g

    Default date & time

    10/12/2002 10:11 PM

    G

    Default date & time (long)

    10/12/2002 10:11:29 PM

    M

    Month day pattern

    December 10

    r

    RFC1123 date string

    Tue, 10 Dec 2002 22:11:29 GMT

    s

    Sortable date string

    2002-12-10T22:11:29

    u

    Universal sortable, local time

    2002-12-10 22:13:50Z

    U

    Universal sortable, GMT

    December 11, 2002 3:13:50 AM

    Y

    Year month pattern

    December, 2002

     

    The 'U' specifier seems broken; that string certainly isn't sortable.

    Custom date formatting:

    Specifier

    Type

    Example

    Example Output

    dd

    Day

    {0:dd}

    10

    ddd

    Day name

    {0:ddd}

    Tue

    dddd

    Full day name

    {0:dddd}

    Tuesday

    f, ff, ...

    Second fractions

    {0:fff}

    932

    gg, ...

    Era

    {0:gg}

    A.D.

    hh

    2 digit hour

    {0:hh}

    10

    HH

    2 digit hour, 24hr format

    {0:HH}

    22

    mm

    Minute 00-59

    {0:mm}

    38

    MM

    Month 01-12

    {0:MM}

    12

    MMM

    Month abbreviation

    {0:MMM}

    Dec

    MMMM

    Full month name

    {0:MMMM}

    December

    ss

    Seconds 00-59

    {0:ss}

    46

    tt

    AM or PM

    {0:tt}

    PM

    yy

    Year, 2 digits

    {0:yy}

    02

    yyyy

    Year

    {0:yyyy}

    2002

    zz

    Timezone offset, 2 digits

    {0:zz}

    -05

    zzz

    Full timezone offset

    {0:zzz}

    -05:00

    :

    Separator

    {0:hh:mm:ss}

    10:43:20

    /

    Separator

    {0:dd/MM/yyyy}

    10/12/2002

    Enumerations

    Specifier

    Type

    g

    Default (Flag names if available, otherwise decimal)

    f

    Flags always

    d

    Integer always

    x

    Eight digit hex.

    二、Some Useful Examples

    String.Format("{0:$#,##0.00;($#,##0.00);Zero}", value);

    This will output "$1,240.00" if passed 1243.50. It will output the same format but in parentheses if the number is negative, and will output the string "Zero" if the number is zero.

    String.Format("{0:(###) ###-####}", 18005551212);

    This will output "(800) 555-1212".

     

    变量.ToString()
    字符型转换 转为字符串
    12345.ToString("n"); //生成 12,345.00
    12345.ToString("C"); //生成 ¥12,345.00
    12345.ToString("e"); //生成 1.234500e+004
    12345.ToString("f4"); //生成 12345.0000
    12345.ToString("x"); //生成 3039 (16进制)
    12345.ToString("p"); //生成 1,234,500.00%

     

    C#:String.Format数字格式化输出

    int a = 12345678;
    //格式为sring输出
    // Label1.Text = string.Format("asdfadsf{0}adsfasdf",a);
    // Label2.Text = "asdfadsf"+a.ToString()+"adsfasdf";
    // Label1.Text = string.Format("asdfadsf{0:C}adsfasdf",a);//asdfadsf¥1,234.00adsfasdf
    // Label2.Text = "asdfadsf"+a.ToString("C")+"adsfasdf";//asdfadsf¥1,234.00adsfasdf

    double b = 1234.12543;
    a = 12345678;
    //格式为特殊的string样式输出
    // Label1.Text = string.Format("asdfadsf{0:C}adsfasdf",b);//asdfadsf¥1,234.13adsfasdf
    // Label2.Text = "asdfadsf"+b.ToString("C")+"adsfasdf";//asdfadsf¥1,234.13adsfasdf
    // Label1.Text = string.Format("{0:C3}",b);//¥1,234.125
    // Label2.Text = b.ToString("C3");//¥1,234.125
    // Label1.Text = string.Format("{0:d}",a);//十进制--12345678
    // Label2.Text = b.ToString("d");//十进制--相同的类型,转换报错
    // Label1.Text = string.Format("{0:e}",a);//指数--1.234568e+007
    // Label2.Text = b.ToString("e");//指数--1.234125e+003

    // Label1.Text = string.Format("{0:f}",a);//定点数--12345678.00
    // Label2.Text = b.ToString("f");//定点数--1234.13
    // Label1.Text = string.Format("{0:n}",a);//数值--12,345,678.00
    // Label2.Text = b.ToString("n");//数值--1,234.13
    // Label1.Text = string.Format("{0:x}",a);//十六进制--bc614e
    // Label2.Text = b.ToString("x");//16--带有小数不能转换,出错
    // Label1.Text = string.Format("{0:g}",a);//通用为最紧凑--12345678
    // Label2.Text = b.ToString("g");//通用为最紧凑--1234.12543
    // Label1.Text = string.Format("{0:r}",a);//转来转去不损失精度--整数不允许用,报错
    // Label2.Text = b.ToString("r");//转来转去不损失精度--1234.12543

    b = 4321.12543;
    a = 1234;
    //自定义模式输出:
    // 0 描述:占位符,如果可能,填充位
    // Label1.Text = string.Format("{0:000000}",a);// 001234
    // Label2.Text = string.Format("{0:000000}",b);// 004321
    // # 描述:占位符,如果可能,填充位
    // Label1.Text = string.Format("{0:#######}",a);// 1234
    // Label2.Text = string.Format("{0:#######}",b);// 4321
    // Label1.Text = string.Format("{0:#0####}",a);// 01234
    // Label2.Text = string.Format("{0:0#0000}",b);// 004321

    // . 描述:小数点
    // Label1.Text = string.Format("{0:000.000}",a);//1234.000
    // Label2.Text = string.Format("{0:000.000}",b);//4321.125
    b = 87654321.12543;
    a = 12345678;
    // , 描述:数字分组,也用于增倍器
    // Label1.Text = string.Format("{0:0,00}",a);// 12,345,678
    // Label2.Text = string.Format("{0:0,00}",b);// 87,654,32
    // Label1.Text = string.Format("{0:0,}",a);// 12346
    // Label2.Text = string.Format("{0:0,}",b);// 87654
    // Label1.Text = string.Format("{0:0,,}",a);// 12
    // Label2.Text = string.Format("{0:0,,}",b);// 88
    // Label1.Text = string.Format("{0:0,,,}",a);// 0
    // Label2.Text = string.Format("{0:0,,,}",b);// 0
    // % 描述:格式为百分数
    // Label1.Text = string.Format("{0:0%}",a);// 1234567800%
    // Label2.Text = string.Format("{0:#%}",b);// 8765432113%
    // Label1.Text = string.Format("{0:0.00%}",a);// 1234567800.00%
    // Label2.Text = string.Format("{0:#.00%}",b);// 8765432112.54%
    // 'abc' 描述:显示单引号内的文本
    // Label1.Text = string.Format("{0:'文本'0}",a);// 文本12345678
    // Label2.Text = string.Format("{0:文本 0}",b);// 文本87654321
    // / 描述: 后跟1要打印字的字符,也用于转移符/n等
    // Label1.Text = string.Format("/"你好! /"");// "你好!"
    // Label2.Text = string.Format("//c//books//new//we.asp");///c/books/new/we.asp
    // @描述:后跟要打印字的字符,
    // Label1.Text = string.Format(@"""你好!"""); // "你好!"要打印"则需要输入两对才可以
    // Label2.Text = string.Format(@"/c/books/new/we.asp");///c/books/new/we.asp

    百分数格式应该用“p”这个参数。

    格式      原始数据    结果
    "{0:P}" 0.40 40%
    数字 {0:N2} 12.36
    数字 {0:N0} 13
    货币 {0:c2} $12.36
    货币 {0:c4} $12.3656
    货币 "¥{0:N2}" ¥12.36
    科学计数法 {0:E3} 1.23E+001
    百分数 {0:P} 12.25% P and p present the same.
    日 期 {0:D} 2006年11月25日
    日期 {0:d} 2006-11-25
    日期 {0:f} 2006年11月25日 10:30
    日期 {0:F} 2006年11月25日 10:30:00
    日期 {0:s} 2006-11-26 10:30:00
    时间 {0:T} 10:30:00

    DateTime dt = DateTime.Now;
    Label1.Text = dt.ToString();//2005-11-5 13:21:25
    Label2.Text = dt.ToFileTime().ToString();//127756416859912816
    Label3.Text = dt.ToFileTimeUtc().ToString();//127756704859912816
    Label4.Text = dt.ToLocalTime().ToString();//2005-11-5 21:21:25
    Label5.Text = dt.ToLongDateString().ToString();//2005年11月5日
    Label6.Text = dt.ToLongTimeString().ToString();//13:21:25
    Label7.Text = dt.ToOADate().ToString();//38661.5565508218
    Label8.Text = dt.ToShortDateString().ToString();//2005-11-5
    Label9.Text = dt.ToShortTimeString().ToString();//13:21
    Label10.Text = dt.ToUniversalTime().ToString();//2005-11-5 5:21:25

    Label1.Text = dt.Year.ToString();//2005
    Label2.Text = dt.Date.ToString();//2005-11-5 0:00:00
    Label3.Text = dt.DayOfWeek.ToString();//Saturday
    Label4.Text = dt.DayOfYear.ToString();//309
    Label5.Text = dt.Hour.ToString();//13
    Label6.Text = dt.Millisecond.ToString();//441
    Label7.Text = dt.Minute.ToString();//30
    Label8.Text = dt.Month.ToString();//11
    Label9.Text = dt.Second.ToString();//28
    Label10.Text = dt.Ticks.ToString();//632667942284412864
    Label11.Text = dt.TimeOfDay.ToString();//13:30:28.4412864

    Label1.Text = dt.ToString();//2005-11-5 13:47:04
    Label2.Text = dt.AddYears(1).ToString();//2006-11-5 13:47:04
    Label3.Text = dt.AddDays(1.1).ToString();//2005-11-6 16:11:04
    Label4.Text = dt.AddHours(1.1).ToString();//2005-11-5 14:53:04
    Label5.Text = dt.AddMilliseconds(1.1).ToString();//2005-11-5 13:47:04
    Label6.Text = dt.AddMonths(1).ToString();//2005-12-5 13:47:04
    Label7.Text = dt.AddSeconds(1.1).ToString();//2005-11-5 13:47:05

  • 相关阅读:
    How to display errors using Page_Error event of Page Object?
    DataGrid的一个用法!
    Android中Paint字体属性的一些设置
    Androidb不使用OpenGL实现3D旋转效果
    dip、dp、sp、px和pt的区别是什么?
    Windows Phone 入门教程
    苹果开发准备工作
    Testing和Instrumentation
    为Android添加一个新语种
    Android屏幕密度(Density)和分辨率的关系 及转换
  • 原文地址:https://www.cnblogs.com/arxive/p/5744823.html
Copyright © 2020-2023  润新知