Scala编程实战(原书第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.5 字符串输出的格式化

问题

你想格式化字符串的输出,包括包含了整数、浮点数、双精度浮点数以及字符的字符串。

解决方案

使用f插值器的printf风格字符串格式化。许多配置选项在下面的例子中有展示。

日期/时间格式化

日期和时间的格式化将在3.11节中讨论。

格式化字符串

字符串可以用%s格式符进行格式化。下面的例子展示了如何对字符串进行格式化,包括如何在一定的空间内对其进行左对齐和右对齐:

我发现当把变量名放在大括号里时,可以让格式化字符串的可读性更高,所以在本书剩余部分将会使用这种风格:

浮点数格式化

浮点数是用%f格式符进行输出的。下面的例子包括了Double和Float类型的值,展示了浮点数格式化的效果:

这些例子展示了Double类型值的格式化方法,同样的语法对Float类型值也适用:

整数格式化

整数是用%d格式符进行输出的。下面的例子展示了整数填充和调整的效果:

补0的方法

下面的例子展示了给整数补0的效果:

字符格式化

字符是用%c格式符进行输出的。下面的例子展示了格式化字符填充和调整的效果:

f用于多行字符串

需要注意的是,f插值器同样对多行字符串有效,如下所示:

这段代码的输出结果如下:

如2.2节提到的,当使用多行字符串时,也不需要转义单引号和双引号。

讨论

表2-1展示了常见的printf风格的格式符。

表2-1:常用printf风格的格式符

表2-1:常用printf风格的格式符(续)

为了更好地理解这些格式符的工作原理,下面的例子展示了如何使用%%和$$:

表2-2展示了在格式化字符串时可以使用的特殊字符。

表2-2:能在格式化字符串时使用的字符序列

另见

·java.util.Formatter类文档(https://oreil.ly/PWCim)展示了所有可用的格式化字符。