• String.format()的详细用法


    问题

    在开发中一段字符串的中间某一部分需要可变的。如:文本要展示 “张三用户来自深圳,年龄 18,性别 男…”
    其中的 张三 是用户名,每个用户都是不一样的;
    地区 深圳 为可变的String数据;年龄 18 为可变的int数据;性别 男 为可变的String数据。

    解决方式

    使用 String.format方法来解决。

    public static void main(String[] args) {
        String name = "张三";
        String city = "深圳";
        int age = 18;
        String sex = "男";
        String format = String.format("%s用户来自%s,年龄 %d,性别 %s.....", name, city, age, sex);
        System.out.println(format);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    String.format()说明

    1. String.format()字符串两个重载方法

    • format(String format, Object… args):新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。
    • format(Locale locale, String format, Object… args):使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。

    2. 占位符类型

    转换符详细说明示例
    %s字符串类型“值得点赞”
    %c字符类型‘h’
    %b布尔类型true
    %d整数类型(十进制)88
    %x整数类型(十六进制)FF
    %o整数类型(八进制)77
    %f浮点类型7.777
    %a十六进制浮点类型FF.35AE
    %e指数类型9.38e+5
    %g通用浮点类型(f和e类型中较短的)
    %h散列码
    %d%百分比类型
    %n换行符
    %tx日期与时间类型
    示例说明
    public static void main(String[] args) {
            String str;
            // %s
            str = String.format("Hi,%s", "布鲁斯");
            System.out.println(str);
            // %c   %n
            str = String.format("字母c的大写是:%c %n", 'C');
            System.out.println(str);
            // %b
            str = String.format("布尔结果是:%b", 3>2);
            System.out.println(str);
            // %d
            str = String.format("100的一半是:%d", 100/2);
            System.out.println(str);
            // %x
            str = String.format("100的16进制数是:%x", 100);
            System.out.println(str);
            // %o
            str = String.format("100的8进制数是:%o", 100);
            System.out.println(str);
            // %f
            str = String.format("50元的书打8.5折扣是:%f 元", 50 * 0.85);
            System.out.println(str);
            // %a
            str = String.format("上面价格的16进制数是:%a", 50 * 0.85);
            System.out.println(str);
            // %e
            str = String.format("上面价格的指数表示:%e", 50 * 0.85);
            System.out.println(str);
            // %g
            str = String.format("上面价格的指数和浮点数结果的长度较短的是:%g", 50 * 0.85);
            System.out.println(str);
            // %d%
            str = String.format("上面的折扣是:%d%%", 85);
            System.out.println(str);
            // %h
            str = String.format("字母A的散列码是:%h",'A');
            System.out.println(str);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    输出结果

    在这里插入图片描述

    3. 常用标识

    标识说明
    +为正数或负数添加符号
    0在数字位数不够的地方补上0
    空格在位数不够的地方补上空格
    对数字分组,三位一隔,只可以用于十进制
    (使用括号将去掉负号的负数包含进来
    #让十六进制的数字加上OX,八进制的数字加上o;
    辅助%x和%o的使用,相当于一种对数字进制的补充说明提示
    <格式化前一个转换符锁描述的参数
    -左对齐,不够位数的地方补上空格
    示例说明
    public static void main(String[] args) {
        // +
        String str;
        str = String.format("数字的正负表示:%+d %d %+d %d",8,8,-8,-8);
        System.out.println(str);
        // -
        str = String.format("左对齐:%-6d",8);
        System.out.println(str);
        // 0
        str = String.format("缺位补零:%06d",8);
        System.out.println(str);
        // 空格
        str = String.format("缺位补空格:% 6d",8);
        System.out.println(str);
        str = String.format("缺位补空格:% 6d",-8);
        System.out.println(str);
        // ,
        str = String.format("数字分组:%,d",123456789);
        System.out.println(str);
        // (
        str = String.format("括号用法:%(d",-8888);
        System.out.println(str);
        str = String.format("括号用法:%(d",8888);
        System.out.println(str);
        // #
        str = String.format("#括号用法(十六进制):%#x",12);
        System.out.println(str);
        str = String.format("#括号用法(八进制):%#o",12);
        System.out.println(str);
        // <
        str = String.format("<括号用法:%f %<3.1f",3.14,3.2);
        // "%<3.1f"作用的对象是前一个"%f"所作用的对象
        System.out.println(str);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    输出结果

    在这里插入图片描述

    4. 日期转换符

    标志说明
    c包括全部日期和时间信息
    F"年-月-日"格式
    D'月/日/年’格式
    r“HH:MM:SS PM”格式(12时制)
    T“HH:MM:SS”格式(24时制)
    R“HH:MM”格式(24时制)
    示例说明
    public static void main(String[] args) {
        String str;
        // c
        str = String.format("全部日期和时间信息:%tc",new Date());
        System.out.println(str);
        // F
        str = String.format("年-月-日格式:%tF",new Date());
        System.out.println(str);
        //D
        str = String.format("月/日/年格式:%tD",new Date());
        System.out.println(str);
        //r
        str = String.format("HH:MM:SS PM格式(12时制):%tr",new Date());
        System.out.println(str);
        //T
        str = String.format("HH:MM:SS格式(24时制):%tT",new Date());
        System.out.println(str);
        //R
        str = String.format("HH:MM格式(24时制):%tR",new Date());
        System.out.println(str);
        // %.2f保留两位小数
        str = String.format("3.14保留两位小数:%.2f",3.141);
        System.out.println(str);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    输出结果

    在这里插入图片描述


    如果有收获! 希望老铁们来个三连,点赞、收藏、转发。
    创作不易,别忘点个赞,可以让更多的人看到这篇文章,顺便鼓励我写出更好的博客
  • 相关阅读:
    LOLBins免杀技术研究及样本分析
    Leetcode 1658. Minimum Operations to Reduce X to Zero 前缀和数组题
    使用 Apache SkyWalking 进行 Spring Cloud 应用的分布式追踪与监控:完整教程
    python变量名解析总结
    MindSpore社区群组介绍系列之四——WG-Research
    解决vscode项目中无法识别宏定义的问题
    基于鹦鹉优化算法(Parrot optimizer,PO)的无人机三维路径规划(提供MATLAB代码)
    Ubuntu下VScode配置ssh免密远程登录
    sql注入之高权限注入和文件读写
    人工智能对我们的生活影响有多大
  • 原文地址:https://blog.csdn.net/weixin_45606067/article/details/127449245