常规类型的格式化
format()方法有两种重载形式。
format(String
format, Object… args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。
format(Locale
locale, String format, Object… args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。
显示不同转换符实现不同数据类型到字符串的转换,如图所示。
转 换 符 | 说 明 | 示 例 |
%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 | 散列码 | |
%% | 百分比类型 | % |
%n | 换行符 | |
%tx | 日期与时间类型(x代表不同的日期与时间转换符 |
搭配转换符的标志,如图所示。
标 志 | 说 明 | 示 例 | 结 果 |
+ | 为正数或者负数添加符号 | (“%+d”,15) | +15 |
− | 左对齐 | (“%-5d”,15) | |15 | |
0 | 数字前面补0 | (“%04d”, 99) | 0099 |
空格 | 在整数之前添加指定数量的空格 | (“% 4d”, 99) | | 99| |
, | 以“,”对数字分组 | (“%,f”, 9999.99) | 9,999.990000 |
( | 使用括号包含负数 | (“%(f”, -99.99) | (99.990000) |
# | 如果是浮点数则包含小数点,如果是16进制或8进制则添加0x或0 | (“%#x”, 99)
(“%#o”, 99) | 0x63
0143 |
< | 格式化前一个转换符所描述的参数 | (“%f和%<3.2f”, 99.45) | 99.450000和99.45 |
$ | 被格式化的参数索引 | (“%1$d,%2$s”, 99,”abc”) | 99,abc |
在android的使用很简单,
1.在string.xml文件中定义一个字符串,然后在代码中通过String.format方法来格式化该字符串,比如:
<string name=“today_state_string”>您正与%1$d位朋友在一起游戏,本周排名提升了%2$.3f,获得%3$s的称号,等级为%4$c!</string>
private void showTodayState( int totalUser, float upRate, String hornor, char level ){
String todayStateStr = String.format( getResources( ).getString( R.string.today_state_string), totalUser, upRate, hornor, level );
mTodayStateTxt.setText( todayStateStr );
}
从上面这行字符串的定义可以看出,格式化字符串资源的格式为:
%+参数位置+$+格式化类型,其中:
参 数 位 置:从1开始依次编号,String.forma方法的第二个参数为格式化的第一个参数,后面依次递增;
格式化类型:
s 字符串
f 浮点数
d 整型数
c 字符类型
说了这么多,其实就是定义一个字符串,在字符串里放入可以变化的参数,按照%n$ms(d):代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格,s代表字符串(d代表数字),然后通过String.format(getResources().getString(R.string.定义的字符串资源),参数的数值)。