java.text包中MessageFormat.format和String.format分别支持哪些占位符

目录

java.text.MessageFormat.format

基本语法

代码示例

支持的样式

String.format

基本语法

代码示例 

总结


在Java中,java.text.MessageFormat.format 和 String.format 是两种常用的格式化字符串的方法,但它们支持的占位符格式有所不同。

java.text.MessageFormat.format

MessageFormat 类主要用于国际化(i18n)和本地化(l10n),它支持一种特殊的占位符格式,称为模式字符串。模式字符串中的占位符由花括号 {} 包围,并且可以包含索引、类型、样式等信息。

基本语法

  • {0}{1}, ...:表示参数的索引,从0开始。
  • {argumentIndex, style}:表示带有特定样式的参数。

代码示例

import java.text.MessageFormat;

public class Main {
    public static void main(String[] args) {
        String pattern = "Hello, {0}. Today is {1,date,long}.";
        String result = MessageFormat.format(pattern, "Alice", new java.util.Date());
        System.out.println(result);  // 输出:Hello, Alice. Today is October 3, 2023 10:15:30 AM PDT.
    }
}

支持的样式

  • number:格式化数字。
  • currency:格式化货币。
  • date:格式化日期。
  • time:格式化时间。
  • choice:基于数字选择格式。

String.format

String.format 是基于 java.util.Formatter 类的格式化方法,它支持类似于C语言的printf风格的占位符。

基本语法

  • %s:字符串。
  • %d:十进制整数。
  • %x:十六进制整数。
  • %o:八进制整数。
  • %f:浮点数。
  • %e:科学计数法表示的浮点数。
  • %g:根据具体情况选择 %f 或 %e
  • %a:十六进制表示的浮点数。
  • %c:字符。
  • %b:布尔值。
  • %h:散列码(十六进制)。
  • 日期和时间的格式:

  1. %tF:日期,格式为 yyyy-MM-dd
  2. %tD:日期,格式为 MM/dd/yy
  3. %tr:时间,12小时制,格式为 hh:mm:ss am/pm
  4. %tT:时间,24小时制,格式为 HH:mm:ss
  5. %tR:时间,24小时制,格式为 HH:mm

代码示例 

总结

  • MessageFormat.format 使用花括号 {} 作为占位符,支持复杂的样式信息,主要用于国际化。
  • String.format 使用 % 符号作为占位符,支持类似于C语言的printf风格,主要用于格式化字符串。

选择哪种方法取决于你的具体需求,例如是否需要国际化支持或特定的格式化样式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chen2017sheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值