getQuantityString()的作用及用法

   在英语里,单复数的书写形式是不同于其他语言的(如汉语)。如:一张纸就是a paper,但是两张纸 则是two papers。

   而在程序中,显然用if语句来判断让人看起来很Low(当然,从程序来讲,也有些“兴师动众”的感觉),所以,google推出了更加有高逼格的方法getQuantityString()来判断字符串的取值,好了,下面来介绍下它的用法。

   首先,需要在String资源文件里创建plurals资源,并且给他一个name属性。而资源里面则是一个个Item。如下:

<plurals name="subtitle_plural">
<item quantity="one">%1$s crime</item>
<item quantity="other">%1$s crimes</item>
</plurals>

在这里需要知道的是,quantity是有多个值的,每个值代表了不同的含义,如下:

描述

zero

语言需要对数字0进行特殊处理。(比如阿拉伯语)

one

语言需要对类似1的数字进行特殊处理。(比如英语和其它大多数语言里的1;在俄语里,任何以1结尾但不以11结尾的数也属于此类型。)

two

语言需要对类似2的数字进行特殊处理。(比如威尔士语)

few

语言需要对较小数字进行特殊处理(比如捷克语里的234;或者波兰语里以234结尾但不是121314的数。)

many

语言需要对较大数字进行特殊处理(比如马耳他语里以11-99结尾的数)

other

语言不需要对数字进行特殊处理。

 



其次,在代码中,用getQuantityString()方法来得出你想要的。如下:

int crimeSize = CrimeLab.get(getActivity()).getCrimes().size();
String subtitle = getResources()
.getQuantityString(R.plurals.subtitle_plural, crimeSize, crimeSize);

此时,因为我上面就写了one和other两种情况,所以,这里得出的结果也就是两种情况了。当为1时,显示1crime,数量为其他数值时,显示Xcrimes。

最后,还要说明下,可能有的同学运行后getQuantityString()方法仍没起作用,一直显示的是other的结果,那是因为我们的运行环境是中文,把手机的语言改为English就可以了。

 

plurals
posted @ 2016-10-17 15:36  洗水果的男孩  阅读(3404)  评论(0编辑  收藏  举报