【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 selecteditem>
        <item quantity="other">%d selecteditem>
    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ésitem>
    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 dname=oldname d,(注意需要加上序号)以此类推;参见下方的string型;


2.String型

  • 如“我叫李雷,我来自洛杉矶

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

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

代码中这么写:

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

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

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

你可能感兴趣的:(Android)