zoukankan      html  css  js  c++  java
  • 字符串格式化:Formatter类

    本文目录

    1 Formatter类

    2 格式化说明符

    3 其它相关方法

    1 Formatter类

    1.1 使用方法

    Formatter formatter = new Formatter([destination]);

    formatter.format(String format, Object…args);

    1.2 使用说明

    (1)Formatter构造参数:

    若无参数,格式化后的字符串会被存放在一个内部的StringBuffer中,此后,可通过formatter.toString()方法返回格式化后的字符串。

    // 无参数构造Formatter对象
    Formatter formatter = new Formatter();
    // 格式化操作
    formatter.format("The result number is %d.", 7);
    // 获得格式化后的字符串
    String str = formatter.toString();
    // 控制台输出内容:The result number is 7.
    System.out.println(str);
     

    若有参数,该参数表示要输出的目标位置,可以是一个StringBuffer对象,一个文件,或一个数据流,此后,格式化的字符串将直接输出到指定位置。

    // 构造Formatter对象并指向标准输出流
    Formatter formatter = new Formatter(System.out);
    // 格式化并输出到指定位置(控制台输出内容:The result number is 7.)
    formatter.format("The result number is %d.", 7);
     

    (2)format方法参数:

    String format

    是一个包含格式化说明符的字符串,该字符串指定了整体目标格式,通过格式化说明符进行占位并指定相应位置的内容格式;

    Object… args

    表示多个参数对象,其内容将依次对应format中的占位符(格式化说明符),根据指定的内容格式填充到指定位置,从而形成一个满足要求的字符串。

    2 格式化说明符

    2.1 格式

    %[argument_index$][flags][width][.precision]conversion

    2.2 格式说明

    (1)argument_index$:指定对应的内容参数位置,默认按照顺序依次对应。

    (2)flags:格式控制。

    (3)width:区域宽度。

    (4).precision:对于浮点型数据,表示显示的小数位数;对于字符串数据,表示显示的字符数量。

    (5)conversion:类型转换字符。

    2.3 格式控制(flags)

    符号 作用 示例 效果
    无负号 右对齐 formatter.format("***%8d***", 1000); ***    1000***
    有负号“-” 左对齐 formatter.format("***%-8d***", 1000); ***1000    ***
    有加号“+” 正数前显示正号
    负数前显示负号 formatter.format("***%+8d***", 1000);
    formatter.format("***%+8d***", -1000); ***   +1000***
    ***   -1000***
    有空格“ ” 正数前显示空格
    负号前显示负号 formatter.format("***% 8d***", 1000);
    formatter.format("***% 8d***", -1000); ***    1000***
    ***   -1000***
    有零“0” 使用0填充剩余位置 formatter.format("***%08d***", 1000); ***00001000***
    有逗号“,” 每3位数字添加一个逗号 formatter.format("***%,8d***", 1000); ***   1,000***
     

    2.4 类型转换字符

    符号 类型 示例 效果
    d 整数型(十进制) formatter.format("%d", 1000); 1000
    o 整数型(八进制) formatter.format("%o", 1000); 1750
    x 整数型(十六进制) formatter.format("%x", 1000); 3e8
    f 浮点型(十进制) formatter.format("%f", 1000.0); 1000.000000
    e 浮点型(科学计数) formatter.format("%e", 1000.0); 1.000000e+03
    b 布尔型 formatter.format("%b", true); true
    c 字符型 formatter.format("%c", 'A'); A
    s 字符串型 formatter.format("%s", "String"); String
    % 字符“%” formatter.format("%d%%", 100); 100%
     

    2.5 时间类型转换字符

    符号 类型 示例 效果
    tC 上世纪 formatter.format("%tC", calendar); 20
    tY 年(4位) formatter.format("%tY", calendar); 2017
    ty 年(2位) formatter.format("%ty", calendar); 17
    tm 月 formatter.format("%tm", calendar); 11
    tB 月份 formatter.format("%tB", calendar); November
    tb 月份缩写 formatter.format("%tb", calendar); Nov
    td 日(2位) formatter.format("%td", calendar); 20
    te 日 formatter.format("%te", calendar); 20
    tA 星期 formatter.format("%tA", calendar); Monday
    ta 星期(缩写) formatter.format("%ta", calendar); Mon
    tH 小时(24小时制)(2位) formatter.format("%tH", calendar); 18
    tk 小时(24小时制) formatter.format("%tk", calendar); 18
    tI 小时(12小时制)(2位) formatter.format("%tI", calendar); 06
    tl 小时(12小时制) formatter.format("%tl", calendar); 6
    tM 分钟 formatter.format("%tM", calendar); 10
    tS 秒 formatter.format("%tS", calendar); 22
    tL 毫秒 formatter.format("%tL", calendar); 490
    tN 微秒 formatter.format("%tN", calendar); 570000000
    tp 上午/下午 formatter.format("%tp", calendar); pm
    tz 时区 formatter.format("%tz", calendar); +0800
    tZ 时区(缩写) formatter.format("%tZ", calendar); CST
    ts 自1970-01-01 00:00的秒数 formatter.format("%ts", calendar); 1511172687
    tQ 自1970-01-01 00:00的毫秒数 formatter.format("%tQ", calendar); 1511172687297
    tF YYYY-MM-DD formatter.format("%tF", calendar); 2017-11-20
    tD MM/DD/YY formatter.format("%tD", calendar); 11/20/17
    tR HH:MM(24小时制) formatter.format("%tR", calendar); 18:11
    tT HH:MM:SS(24小时制) formatter.format("%tT", calendar); 18:11:27
    tr HH:MM:SS 上午/下午 formatter.format("%tr", calendar); 06:11:27 pm
    tc 星期 月 日 HH:MM:SS YYYY formatter.format("%tc", calendar); Mon Nov 20 18:11:27 CST 2017
     

    3 其它相关方法

    3.1 String.format方法

    该方法内部,实际上也是通过Formatter类进行格式化,然后,将格式化后的字符串返回,其内部代码如下:

    public static String format(String format, Object... args) {
    return new Formatter().format(format, args).toString();
    }
     

    3.2 System.out.format方法

    该方法内部,也是通过Formatter类进行格式化,然后,将格式化后的字符串直接输出到System.out输出流,其内部代码如下:

    public PrintStream format(String format, Object ... args) {
    try {
    synchronized (this) {
    ensureOpen();
    if ((formatter == null)
    || (formatter.locale() != Locale.getDefault()))
    formatter = new Formatter((Appendable) this);
    formatter.format(Locale.getDefault(), format, args);
    }
    } catch (InterruptedIOException x) {
    Thread.currentThread().interrupt();
    } catch (IOException x) {
    trouble = true;
    }
    return this;
    }
     
    来源:CSDN
    原文:https://blog.csdn.net/cuixianlong/article/details/78583186
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    Bootstrap入门
    CSS3动画详解(图文教程)
    CSS3属性详解(图文教程)
    CSS3选择器详解
    HTML5详解
    jQuery动画详解
    jQuery的介绍和选择器详解
    html 出现粒子线条,鼠标移动会以鼠标为中心吸附的特效之canvas-nest.js插件
    div 内容宽度自适应、超出后换行
    layui layui.open弹窗后按enter键不停弹窗问题的解决
  • 原文地址:https://www.cnblogs.com/muyuchengguang/p/9855137.html
Copyright © 2011-2022 走看看