String.format()使用指定的区域设置、格式字符串和参数返回格式化字符串,方法定义如下:
参数一:格式化期间要应用的区域设置
参数二:格式字符串
参数三:格式字符串中的格式说明符引用的参数。如果参数多于格式说明符,则忽略额外的参数。参数的数量是可变的,可以为零。参数的最大数量受Java定义的Java数组的最大维度限制™ 虚拟机规范。空参数的行为取决于转换。
返回结果:格式化后的字符串。
异常:“格式字符串包含非法语法”、“与给定参数不兼容的格式说明符”、“给定格式字符串的参数不足”会抛出java.util.IllegalFormatException异常。
格式字符串中可以给占位符指定使用哪个位置的参数,比如:%1$s 表示第一个参数是字符串类型。
可以分别为每个位置指定参数值:
//班长:%1$s;性别:%2$s;年龄:%3$d;
//班长:张三;性别:男;年龄:20;
val format1 = getString(R.string.string_format_multi_param)
val string1 = String.format(Locale.CHINA,format1, "张三", "男", 20)
也可以指定多个位置为相同的参数值:
//班长:%1$s;语文课代表:%1$s;班级第一名:%1$s;
//班长:张三;语文课代表:张三;班级第一名:张三;
val format2 = getString(R.string.string_format_one_param)
val string2 = String.format(Locale.CHINA,format2, "张三")
常用的占位符:
符号 | 说明 |
%s | 字符串类型; "张三" |
%c | 字符类型; 'a' |
%b | 布尔类型; true |
%d | 整数类型; 100 |
%x | 整数类型(十六进制); FF |
%o | 整数类型(八进制); 77 |
%f | 浮点类型; 0.01 |
%a | 浮点类型(十六进制); FF.1B |
%e | 指数类型;9.5e+5 |
%% | 百分号; |
%n | 换行符; |
%h | hashCode()值; |
日期相关:
符号 | 日期格式 | 说明 |
%tx | 日期与时间类型:x代表日期格式 | |
c | %tc;星期四 三月 1 14:21:20 CST 2007 | |
F | %tF; 2018-03-01 | |
D | %tD; 03/01/18 | |
r | %tr; 02:25:51 下午 | |
T | %tT; 14:28:16 | |
R | %tR; 14:28 |
特殊用法:
符号 | 说明 | 案例 String.format | 结果 |
+ | 整数添加符号 | ("%+d", 1) | +1 |
("%+d", -1) | -1 | ||
0 | 补零 | ("%05d", 1) | 00001 |
空格 | 补空格 | ("% 5d", 1) | ※※※※1 (一个※表示一个空格) |
, | "以,"分割数字(用于显示金额) | ("%,f", 9999.99) | 9,999.99 |
.3 | 小数点后保留3位 | ("%.3f", 3.1415926) | 3.142 |