前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于String.format(String format, Object... args)

关于String.format(String format, Object... args)

作者头像
Li_XiaoJin
发布2022-06-10 21:28:29
7370
发布2022-06-10 21:28:29
举报
文章被收录于专栏:Lixj's BlogLixj's Blog

最近在以前系统的代码上看到这个方法,觉得还不错,记录一下。

这个主要有两个用法:

  1. String.format(String format, Object... args) 使用指定的格式字符串和参数返回一个格式化字符串。(默认使用本地语言)
  2. String.format(Locale l, String format, Object... args) 使用指定的语言环境、格式字符串和参数返回一个格式化字符串。 (使用 Locale 可以指定语言。)

通过查看源码可以看到这个方法是从 JDK 1.5 开始引入的,底层是调用了 java.util.Formatter 类的 format 方法。

代码语言:javascript
复制
    /**
     * Returns a formatted string using the specified format string and
     * arguments.
     *
     * @return  A formatted string
     *
     * @see  java.util.Formatter
     * @since  1.5
     */
    public static String format(String format, Object... args) {
        return new Formatter().format(format, args).toString();
    }


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

常规类型、字符类型和数值类型的格式说明符的语法如下:%[argument_index$][flags][width][.precision]conversion

可选的 argument_index 是一个十进制整数,用于表明参数在参数列表中的位置。第一个参数由 "1$" 引用,第二个参数由 "2$" 引用,依此类推。

可选 flags 是修改输出格式的字符集。有效标志集取决于转换类型。

可选 width 是一个非负十进制整数,表明要向输出中写入的最少字符数。

可选 precision 是一个非负十进制整数,通常用来限制字符数。特定行为取决于转换类型。

所需 conversion 是一个表明应该如何格式化参数的字符。给定参数的有效转换集取决于参数的数据类型。

  • s:字符串
  • o:八进制数字
  • x:十六进制数字
  • d:十进制数字

用来表示日期和时间类型的格式说明符的语法如下:%[argument_index$][flags][width]conversion

可选的 argument_index、flags 和 width 的定义同上。

所需的 conversion 是一个由两字符组成的序列。第一个字符是 't' 或 'T'。第二个字符表明所使用的格式。这些字符类似于但不完全等同于那些由 GNU date 和 POSIX strftime(3c) 定义的字符。

与参数不对应的格式说明符的语法如下:%[flags][width]conversion

可选 flags 和 width 的定义同上。

所需的 conversion 是一个表明要在输出中所插内容的字符。

更多用法可以查看JDK文档地址:https://tool.oschina.net/apidocs/apidoc?api=jdk-zh后续使用到会陆续更新。

下面举一些例子来说明:

代码语言:javascript
复制
String.format("My name is %s%s", "li", "xj")    ---> My name is lixj

String.format("%1$s,%2$s", "打工人", "打工魂"))        --> 打工人,打工魂
String.format("%2$s,%1$s", "打工人", "打工魂")        --> 打工魂,打工人

String.format("%o", 12))        --> 14  (10进制转8进制)

String.format("%x", 12))        --> c  (10进制转16进制)

String.format("%1$,d", 5645645)        --> 5,645,645 (flag 的用法,这里用都好隔开,并转换成10进制。)

String.format("%1$08d", 21729)        --> 00021729

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://cloud.tencent.com/developer/article/2020524

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档