Java 打印格式字符串

2018-02-12 22:36 更新

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


使用Formatter格式化數(shù)據(jù)需要兩種類型的輸入:

  • 格式字符串
  • 值列表

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

格式字符串可以包含靜態(tài)文本和嵌入格式說明符。靜態(tài)文本在格式字符串中作為結果輸出。

格式說明符用于兩個目的。

  • 它用作格式字符串中格式化數(shù)據(jù)的占位符
  • 它指定如何格式化數(shù)據(jù)

格式說明符

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

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類中使用模板,我們將占位符轉換為格式說明符。模板變?yōu)楦袷阶址?/p>

格式說明符以百分號開頭。

我們可以重寫可以與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 是格式說明符。

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

例子

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

在代碼中,我們創(chuàng)建了一個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 $ 指定參數(shù)的索引。它有一個整數(shù),后跟一個 $ 。

第一個參數(shù)稱為1 $,第二個參數(shù)為2 $,依此類推。我們可以多次參考同一個參數(shù)。

flags 包含一組字符并指定輸出的格式。 flags 的有效值取決于參數(shù)的數(shù)據(jù)類型。

width 指定最小數(shù)目輸出所需的字符。

.precision 的確切含義取決于轉換指定要輸出的最大字符數(shù)。

對于十進制數(shù), .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

公眾號
微信公眾號

編程獅公眾號