Java中String.format格式化字符串用法

java中String类中有两个常用的格式化字符串方法:

static Stringformat(Locale l,String format,Object... args)
          使用指定的语言环境、格式字符串和参数返回一个格式化字符串。
static Stringformat(String format,Object... args)
          使用指定的格式字符串和参数返回一个格式化字符串。
两个方法区别在于是否指定本地语言环境进行本地化:

注:建议使用第二个方法进行根式化字符串,因为在Android做多语言国际化适配的时候,如果不指定语言环境进行格式化字符串时,在俄语、土耳其语等语言环境下String.format字符串时会出现int 1.88格式化后的结果为1,88。很显然在一些语言环境下“.”会根式化成“,”,如果你需要解析或者显示这些字符串会出现这样的结果。所有建议指定语言环境进行格式化代码。

转  换  符


说    明 

示    例

%s

字符串类型

"hello-world"

%c

字符类型

'a'

%b

布尔类型

true

%d

整数类型(十进制)

100

%x

整数类型(十六进制)

16


%o

整数类型(八进制)

24


%f

浮点类型

1.22

%a

十六进制浮点类型

16.0


%g

根据精度和舍入运算后的值,使用计算机科学记数形式或十进制格式对结果进行格式化

16.0

%h

hashCode码
hello

%%

百分比类型

90%

%n

换行符


  

System.out.println(String.format(Locale.ENGLISH, "%s-%s", "hello", "world"));
System.out.println(String.format(Locale.ENGLISH, "%c", 'a'));
System.out.println(String.format(Locale.ENGLISH, "%b", (1 + 1 == 2)));
System.out.println(String.format(Locale.ENGLISH, "%d", 100));
System.out.println(String.format(Locale.ENGLISH, "%x", 16));
System.out.println(String.format(Locale.ENGLISH, "%o", 24));
System.out.println(String.format(Locale.ENGLISH, "%f", 1.22));
System.out.println(String.format(Locale.ENGLISH, "%a", 16.0));
System.out.println(String.format(Locale.ENGLISH, "%g", 16.0));
System.out.println(String.format(Locale.ENGLISH, "%h", "hello"));
System.out.println(String.format(Locale.ENGLISH, "%d%%", 90));

示例结果:

hello-world
a
true
100
10
30
1.220000
0x1.0p4
16.0000
5e918d2
90%

标    志

 

说    明

示    例

结    果

+

带符号数

("%+d",100)

+100

左对齐

("%-2d",100)

|100  |

0

数字前面补指定个数的0

("%02d", 8)

08

空格

在整数之前添加指定个数的空格

("% 4d", 10)

|  10|

,

以“,”对数字分组

("%,d", 10000)

10,000

#

如果是浮点数则包含小数点,如果是16进制或8进制则添加0x或0

("%#x", 100)

("%#o", 100)

0x64

0144

$

被格式化的参数索引

("%1$d,%2$s", 100,"hello")

100,hello


示例:


System.out.println(String.format(Locale.ENGLISH, "%+d", 100));
System.out.println(String.format(Locale.ENGLISH, "%-2d", 100));
System.out.println(String.format(Locale.ENGLISH, "%02d", 8));
System.out.println(String.format(Locale.ENGLISH, "% 4d", 10));
System.out.println(String.format(Locale.ENGLISH, "%,d", 10000));
System.out.println(String.format(Locale.ENGLISH, "%#x", 100));
System.out.println(String.format(Locale.ENGLISH, "%#o", 100));
System.out.println(String.format(Locale.ENGLISH, "%1$d,%2$s", 100, "hello"));

示例结果:


+100
100
08
  10
10,000
0x64
0144
100,hello

以上是比较常用的格式化字符串转换和标志,如有问题请留言,欢迎大家补充指出不足。<( ̄︶ ̄)↗[GO!]。

最后欢迎对Android开发感兴趣的老哥一起讨论。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值