当有一个字符串有一部分是固定另外一部分是需要变化的时候,最好使用String.format()来处理这种情况。
格式为String.format(String format, Object ... args)
例如在www.xxx.com/s?index=后面需要添加参数时
String url = "www.xxx.com/s?index=%d" String format = String.format(url,100) System.out.println(format)
|
执行后即可得到结果www.xxx.com/s?index=100
如在字符串中有多个变化的部分的时候则可以使用以下方法:
例如需要显示距离过年还有xx天xx时xx秒
可以在string.xml中声明
<string name="delay_time">距离过年还有%1$d天%2$d时%3$d秒</string>
|
在代码中的使用:
mTextView.setText(String.format(getResources().getString(R.string.delay_time),mDay,mMinute,mSecond));
|
即使用%n$d这种格式来添加多个参数,其中n表示其在String.format()中在第几个参数$d则表示其位一个整数类型
常规类型的格式化
| 转换符 |
说明 |
实例 |
| %s |
字符串类型 |
“qwerty” |
| %c |
字符类型 |
‘w’ |
| %b |
布尔类型 |
true |
| %d |
十进制整数 |
56 |
| %x |
十六进制整数 |
AF |
| %o |
八进制整数 |
77 |
| %f |
浮点类型 |
12.34 |
| %a |
十六进制浮点 |
AF.21AE |
| %e |
指数类型 |
9.38e+5 |
| %g |
通用浮点类型 |
|
| %h |
散列码 |
|
| %% |
百分比类型 |
% |
| %n |
换行符 |
|
| %tx |
日期和事件类型(x表示不同的日期时间转换符) |
|
示例代码
String str1=String.format("Hi,%s", "哈士奇"); System.out.println(str1); String str2=String.format("Hi,%s:%s.%s", "老鹰","是一种","鸟类"); System.out.println(str2); System.out.printf("字母h的大写是:%c %n", 'H'); System.out.printf("12.34>33.22的结果是:%b %n", 12.34>33.22); System.out.printf("100的一半是:%d %n", 100/2); System.out.printf("100的16进制数是:%x %n", 100); System.out.printf("100的8进制数是:%o %n", 100); System.out.printf("100元的书包打8.5折扣是:%f 元%n", 100*0.85); System.out.printf("100的16进制浮点数是:%a %n", 100*0.85); System.out.printf("100的指数表示:%e %n", 100*0.85); System.out.printf("10的指数和浮点数结果的长度较短的是:%g %n", 100*0.85); System.out.printf("100的折扣是%d%% %n", 85); System.out.printf("字母A的散列码是:%h %n", 'A');
|
代码输出结果如下:
Hi,哈士奇 Hi,老鹰:是一种.鸟类 字母h的大写是:H 12.34>33.22的结果是:false 100的一半是:50 100的16进制数是:64 100的8进制数是:144 100元的书包打8.5折扣是:85.000000 元 100的16进制浮点数是:0x1.54p6 100的指数表示:8.500000e+01 10的指数和浮点数结果的长度较短的是:85.0000 100的折扣是85% 字母A的散列码是:41
|
日期和时间字符串格式化
| 转换符 |
说明 |
实例 |
| c |
包括全部时间和日期信息 |
星期四 六月 14:12:20 CST 2021 |
| F |
“年-月-日”格式 |
2021-6-10 |
| D |
”月/日/年”格式 |
6/10/21 |
| r |
“HH:MM:SS PM”格式(12小时制) |
02:12:20 下午 |
| T |
“HH:MM:SS”格式(24小时制) |
14:12:20 |
| R |
“HH:MM”格式(24小时制) |
14:12 |
示例代码
Date date=new Date(); System.out.printf("全部日期和时间信息:%tc%n",date); System.out.printf("年-月-日格式:%tF%n",date); System.out.printf("月/日/年格式:%tD%n",date); System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date); System.out.printf("HH:MM:SS格式(24时制):%tT%n",date); System.out.printf("HH:MM格式(24时制):%tR",date);
|
代码输出结果为:
全部日期和时间信息:星期三 九月 19 13:47:42 CST 2018 年-月-日格式:2018-09-19 月/日/年格式:09/19/18 HH:MM:SS PM格式(12时制):01:47:42 下午 HH:MM:SS格式(24时制):13:47:42 HH:MM格式(24时制):13:47
|