Java 打印格式字符串

2018-02-12 22:36 更新

Java格式 - Java 打印格式字符串


使用Formatter格式化数据需要两种类型的输入:

  • 格式字符串
  • 值列表

格式字符串定义如何格式化值列表。

格式字符串可以包含静态文本和嵌入格式说明符。静态文本在格式字符串中作为结果输出。

格式说明符用于两个目的。

  • 它用作格式字符串中格式化数据的占位符
  • 它指定如何格式化数据

格式说明符

假设您要打印包含某人的出生日期的文本。以下是此类文本的示例:

January 16, 1970  is Mike"s birth day. Let"s go and celebrate.
January 11, 1971  is John"s birth day. Let"s go and celebrate.
January 16, 1972  is Jane"s birth day. Let"s go and celebrate.
January 16, 1973  is Kite"s birth day. Let"s go and celebrate.

上述文本包含固定文本和格式化文本。 为了重用格式和填写人名称和生日我们可以写一个模板如下:

<month> <day>,  <year>  is <name>"s  birth  day. Let"s go and celebrate.

生日日期用尖括号括起来,以及人的姓名。我们可以称它为占位符。 后来我们可以为占位符提供真正的价值。

要在Formatter类中使用模板,我们将占位符转换为格式说明符。模板变为格式字符串。

格式说明符以百分号开头。

我们可以重写可以与Formatter类一起使用的模板字符串,如下所示。

%1$tB %1$td,  %1$tY is %2$s"s  birth  day. Let"s go and celebrate.

在此格式字符串中,%1 $ tB %1 $ td %1 $ tY %2 $ s 是格式说明符。

格式字符串中的其余文本,例如“生日,让我们去庆祝",是固定文本。

例子

以下代码显示如何使用上述格式字符串打印格式化文本。

在代码中,我们创建了一个LocalDate来存储Mike的生日。

本地日期值和“Mike"成为格式字符串的输入值。

import java.time.LocalDate;
import java.time.Month;

public class Main {
  public static void main(String[] args) {
    LocalDate dob = LocalDate.of(1971, Month.MAY, 16);
    System.out.printf(
        "%1$tB %1$td,  %1$tY is %2$s"s birth day. Let"s go and celebrate.",
        dob, "Mike");
  }
}

上面的代码生成以下结果。

格式说明符的语法

格式说明符的一般语法如下:

%<argument-index$><flags><width><.precision><conversion>

转换部分是必需的,所有其他部分都是可选的。

格式说明符和标记之间没有空格格式字符串中的格式说明符的开始。

要转义,请使用 %%

argument-index $ 指定参数的索引。它有一个整数,后跟一个 $

第一个参数称为1 $,第二个参数为2 $,依此类推。我们可以多次参考同一个参数。

flags 包含一组字符并指定输出的格式。 flags 的有效值取决于参数的数据类型。

width 指定最小数目输出所需的字符。

.precision 的确切含义取决于转换指定要输出的最大字符数。

对于十进制数, .precision 以点开头。

转换(强制部分)指定如何格式化值。

有两个特殊的格式说明符:

  • "%%" 格式输出 "%"
  • “%n”格式输出特定于平台的换行符。

以下代码显示如何使用这两个特殊格式说明符:

public class Main {
  public static void main(String[] args) {
    System.out.printf("The rate is 10%%.%nA%nB");
  }
}

上面的代码生成以下结果。

The rate is 10%.
A
B

上面的代码生成以下结果。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号