zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    成为优秀程序员的101条建议(3)
    shell字符串的用法
    Centos yum国内源及配置含义
    go自动补全
    shell中空格的使用;空格替换;通配符
    shell自动补全功能:bash和zsh;zsh启动优化
    Mac下的命令行自动补全功能
    mac环境下intellij的自定义配置文件位置
    vim中delete(backspace)键不能向左删除
    一个性能较好的JVM参数配置
  • 原文地址:https://www.cnblogs.com/FruitBoy/p/5969984.html
Copyright © 2011-2022 走看看