Module java.base
Package java.util

Class FormatProcessor

java.lang.Object
java.util.FormatProcessor
所有实现的接口:
StringTemplate.Processor预览<String,RuntimeException>, StringTemplate.Processor.Linkage预览

FormatProcessor 是 Java 平台的预览 API。
仅当启用预览功能时,程序才能使用 FormatProcessor
预览功能可能会在将来的版本中被移除,或升级为 Java 平台的永久功能。
这个StringTemplate.Processor预览使用Formatter规范和在StringTemplate预览中找到的值构造一个String结果。与Formatter不同,FormatProcessor预览使用紧随其后的嵌入表达式的值,而不使用空格,作为格式说明符。例如:
FormatProcessor fmt = FormatProcessor.create(Locale.ROOT);
int x = 10;
int y = 20;
String result = fmt."%05d\{x} + %05d\{y} = %05d\{x + y}";
在上面的示例中,result的值将是"00010 + 00020 = 00030"

没有前导格式说明符的嵌入表达式,默认使用%s

FormatProcessor fmt = FormatProcessor.create(Locale.ROOT);
int x = 10;
int y = 20;
String result1 = fmt."\{x} + \{y} = \{x + y}";
String result2 = fmt."%s\{x} + %s\{y} = %s\{x + y}";
在上面的示例中,result1result2的值都将是"10 + 20 = 30"

FormatProcessor预览使用的格式规范和抛出的异常与Formatter相同。

然而,与参数位置相关的两个显著差异。显式的n$和相对的<索引将导致由于缺少参数列表而引发异常。在规范和嵌入表达式之间出现的空格也会引发异常。

FormatProcessor预览允许使用不同的区域设置。例如:

Locale locale = Locale.forLanguageTag("th-TH-u-nu-thai");
FormatProcessor thaiFMT = FormatProcessor.create(locale);
int x = 10;
int y = 20;
String result = thaiFMT."%4d\{x} + %4d\{y} = %5d\{x + y}";
在上面的示例中,result的值将是" ๑๐ + ๒๐ = ๓๐"

对于日常使用,预定义的FMT FormatProcessor预览可用。使用Locale.ROOT定义了FMT。例如:

int x = 10;
int y = 20;
String result = FMT."0x%04x\{x} + 0x%04x\{y} = 0x%04x\{x + y}";
在上面的示例中,result的值将是"0x000a + 0x0014 = 0x001E"
自 JDK 21 起:
21
参见: