用format()方法代替字符串拼接

用format()方法代替字符串拼接

前言

最近看到一位同事用String.format()通过转换符的方式来替代字符串拼接,觉得很有意思,稍微对这种字符串拼接方法做了一下解了。

Formatter.format()方法
public static String format(String format, Object... args)
public static String format(Locale l, String format, Object... args)

public PrintStream format(String format, Object ... args)
public PrintStream format(Locale l, String format, Object... args)

public PrintStream printf(String format, Object ... args)
public PrintStream printf(Locale l, String format, Object... args)

上述以及方法实际上在源码中最终都是调用了Formatter对象中format()方法。

1.转换符

转 换 符 说 明 示 例
%s 字符串类型 “mingrisoft”
%c 字符类型 ‘m’
%b 布尔类型 true
%d 整数类型(十进制) 99
%x 整数类型(十六进制) FF
%o 整数类型(八进制) 77
%f 浮点类型 99.99
%a 十六进制浮点类型 FF.35AE
%e 科学计数法格式 9.38e+5
%g 通用浮点类型(f和e类型中较短的)
%h 散列码 HashCode
%% 百分比类型
%n 换行符
%tx` 日期与时间类型(x代表不同的日期与时间转换符)

2.搭配转换符的标志

标 志 说 明 示 例 结 果
+ 为正数或者负数添加符号 (“%+d与%d%n”, 99,-99) +99与-99
左对齐 (“%-5d”,15) |15 |
0 数字前面补0 (“%04d”, 99) 0099
空格 在整数之前添加指定数量的空格 (“% 4d”, 99) | 99|
, 以“,”对数字分割 (“%,f%n”, 9876.12) 9,876.120000
( 使用括号包含负数 (“%(f”, -99.99) (99.990000)
# 如果是浮点数则包含小数点,如果是16进制或8进制则添加0x或0 (“%#x”, 99),(“%#o”, 99) 0x63,0143
< 格式化前一个转换符所描述的参数 (“%f和%<3.3f”, 99.45) 99.450000和99.450
$ 被格式化的参数索引 (“%2$d,%1$s”, 1,”B”) B,1

3.日期和时间转换符的标志
通过转换符我们还可以对日期进行格式化输出

转 换 符 说 明 示 例
c 包括全部日期和时间信息 星期六 十月 27 14:21:20 CST 2007
F “年-月-日”格式 2007-10-27
D “月/日/年”格式 10/27/07
r “HH:MM:SS PM”格式(12时制) 02:25:51 下午
T “HH:MM:SS”格式(24时制) 14:28:16
R “HH:MM”格式(24时制) 14:28

日期和时间的转换还有很多扩展这里就不做过多介绍啦

参考

1.java字符串格式化:String.format()方法的使用
2.String.format()用法

猜你喜欢

转载自blog.csdn.net/zhuiyucanxin/article/details/79565785
今日推荐