Android中格式化字符串

来源:互联网 发布:淘宝优惠券代码生成 编辑:程序博客网 时间:2024/05/01 03:02
 在Android中想要格式化字符串,可以通过getString(int resId, Object... formatArgs)方法完成,它是在抽象类Context中实现的final方法,因此在Activity等类中只能使用,不能被重写。其中参数resId是在strings.xml中定义的资源的ID,可变参数formatArgs是需要格式化的字符串。

       例如要格式化日期,可以在strings.xml中定义如下的名值对:

    <string name="date_format">日期:%1$s日-%2$s月-%3$s年</string>  

其中,%1代表第一个需要格式化的参数,$s表示参数类型为字符串;注意在String.xml中定义格式化的字符串要写成%1$s的形式,不能直接写成%s。


在Activity中调用如下:

    getString(R.string.date_format,"8","6","2014");     // 日期:8日-6月-2014年  

  但也要注意,Android官网建议Formatter类格式化日期的功能应该用SimpleDateFormat类来代替。


还可以使用下面的方法格式化字符串


   <string name="signin_upload_count">上传人数:%1$d</string>        String valueString = getResources().getString(R.string.signin_upload_count);    valueString = String.format(valueString, 2);

从上面这行字符串的定义可以看出,格式化字符串资源的格式为:

%+参数位置+$+格式化类型,其中:

参 数 位 置:从1开始依次编号,String.forma方法的第二个参数为格式化的第一个参数,后面依次递增;


%n$ms:代表输出的是字符串,n代表是第几个参数,设置m的值可以在输出之前放置空格 
%n$md:代表输出的是整数,n代表是第几个参数,设置m的值可以在输出之前放置空格,也可以设为0m,在输出之前放置m个0 
%n$mf:代表输出的是浮点数,n代表是第几个参数,设置m的值可以控制小数位数,如m=2.2时,输出格式为00.00


格式化类型:

s 字符串

f 浮点数

d 整型数

c 字符类型


在string.xml文件中定义好格式化的字符串资源,通过代码动态设置字符串内容时,必须确保String.format方法里面的参数不少于字符串资源中定义的格式化参数个数(实践证明多了参数是不会报异常的)。





0 0
原创粉丝点击