【Android开发】plurals 和 getQuantityString,以及%d 、%.d 、%1$s 、%1$d等的用法

使用场景:

1.根据数字的不同自动选择不同的字符串显示,特别是单复数。
2.特别是不同国家的语言对应不同的单复数。

使用方法:

在values/strings.xml下的写法:
  • 1.plurals
  • 2.name
  • 3.item
  • 4.quantity
  • 5.zero one few many other 可选。
    <plurals name="num_of_selected">
        <item quantity="one">%d selected</item>
        <item quantity="other">%d selected</item>
    </plurals>
    <plurals name="delete_opration_confirm">
        <item quantity="one">Delete selected item?</item>
        <item quantity="other">Delete selected items?</item>
    </plurals>

又如:

    <plurals name="num_of_selected">
        <item quantity="one">%d sélectionné</item>
        <item quantity="other">%d sélectionnés</item>
    </plurals>
    <plurals name="delete_opration_confirm">
        <item quantity="one">"Supprimer l\&apos;élément sélectionné ?"</item>
        <item quantity="other">"Supprimer les éléments sélectionnés ?"</item>
    </plurals>
在.java中的写法:
  • 1.getResource()
  • 2.getQuantityString
  • 3.注意第二个和第三个参数:
int deleteCount = seletSongs.size();
String title = getResources().getQuantityString(R.plurals.num_of_selected, deleteCount, deleteCount);
注意:

在使用getQuantityString()方法时,如果字符串包含数字格式化串,则需要传递2个deleteCount参数。例如:对于字符串“%d sélectionné”,第一个deleteCount参数选择合适的复数字符串,第二个count参数插入占位符%d中。如果复数字符串资源不包含格式化信息,就不需要给getQuantityString()传递第三个参数(我们这个字符串包含了,所以需要加)。

%d 、%.d 、%1 s d等的用法

1. %d就是:普通的输出
1 2 3 4 5 6 7 8 9
11 12 13 14 15 16 17 18 19
2. %2d就是: 数字按宽度为2,采用右对齐输出,如果不到两位左边补空格
1   2  3  4  5  6  7  8  9
11 12 13 14 15 16 17 18 19
3. %02d和%.2d就是:和%2d的一点不同,左边补0
01 02 03 04 05 06 07 08 09
11 12 13 14 15 16 17 18 19
如下图所示
补充
  • int型%0.2d和%02d输出一样,都是输出两位,不足前面补0,小数点后面是几表示保留几位小数输出。
  • %2d是指输出的数有两位,不足前面补空格,如果数字本身大于两位,则无效了。
  • %02d是指输出两位,不足前面补0,同上放的介绍!

$用于替换

1.整形
  • 如“我今年23岁了“

23是整型的。在string.xml中可以这样写,

<string name="old">我今年%1$d岁了</string> 

代码中这么写:

String sAgeFormat = getResources().getString(R.string.old);  
String sFinalAge = String.format(sAgeFormat, 23);

即将%1$d替换为23;

%1 dname=oldname d,(注意需要加上序号)以此类推;参见下方的string型;


2.String型
  • 如“我叫李雷,我来自洛杉矶

我们目的就是替换李雷洛杉矶
String中可这么写:

<string name="alert">我叫%1$s,我来自%2$s</string> 

代码中这么写:

String fromStrFomat= getResources().getString(R.string.alert);     

String fromStr= String.format(fromStrFomat, "李雷","洛杉矶");

两个string替换的是按照上面程序的顺序依次对应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值