使用场景:
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\'é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 d表达的意思是整个name=”old”中,第一个整型的替代。如果一个name中有两个需要替换的整型内容,则第二个写为: 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替换的是按照上面程序的顺序依次对应。