public class PluralRules
extends Object
implements Serializable
java.lang.Object | |
↳ | android.icu.text.PluralRules |
定义将非负数值映射到一小组关键字上的规则。
规则由文本描述构成,由一系列关键字和条件组成。 select(double)
方法按顺序检查每个条件,并返回与该数字匹配的第一个条件的关键字。 如果没有匹配,则返回KEYWORD_OTHER
。
一个PluralRules对象是不可变的。 它包含样本值的缓存,但是它们是同步的。
PluralRules是可序列化的,因此它可以在可序列化的格式化程序中使用。
有关编写规则的更多信息,详细信息和提示,请参阅 LDML spec, C.11 Language Plural Rules
例子:
"one: n is 1; few: n in 2..4"
这为“一”和“少”定义了两条规则。 'one'的条件是“n是1”,这意味着该条件通过时该数字必须等于1。 “少数”的条件是“n in 2..4”,这意味着该数字必须介于2和4之间,并且是一个整数 - 才能通过该条件。 所有其他号码按默认规则分配关键字“其他”。
"zero: n is 0; one: n is 1; zero: n mod 100 in 1..19"
这说明可以多次定义相同的关键字。 每个规则都按顺序检查,并且条件通过的第一个关键字是返回的那个。 还要注意在最后一条规则中模数应用于n。 因此,其条件适用于119,219,319 ...
"one: n is 1; few: n mod 10 in 2..4 and n mod 100 not in 12..14"
这说明了联合和否定。 “少数”的条件有两个部分,必须满足这两个部分:“2..4中的n mod 10”和“n mod 100中的不是12..14”。 第一部分在前面的例子中将测试前的模量应用于n。 第二部分应用不同的模数,也使用否定,因此它匹配12,13,14,112,113,114,212,213,214 ......中的所有数字
句法:
rules = rule (';' rule)* rule = keyword ':' condition keyword = <identifier> condition = and_condition ('or' and_condition)* and_condition = relation ('and' relation)* relation = not? expr not? rel not? range_list expr = ('n' | 'i' | 'f' | 'v' | 't') (mod value)? not = 'not' | '!' rel = 'in' | 'is' | '=' | '≠' | 'within' mod = 'mod' | '%' range_list = (range | value) (',' range_list)* value = digit+ digit = 0|1|2|3|4|5|6|7|8|9 range = value'..'value
每个非术语都颠倒了意义; 但是,不应该有一个以上。
i,f,t和v值定义如下:
示例如下表所示:
n | i | f | v |
---|---|---|---|
1.0 | 1 | 0 | 1 |
1.00 | 1 | 0 | 2 |
1.3 | 1 | 3 | 1 |
1.03 | 1 | 3 | 2 |
1.23 | 1 | 23 | 2 |
“标识符”是一组没有Unicode Pattern_Syntax或Pattern_White_Space属性的字符序列。
“in”和“within”之间的区别在于“in”仅包含指定范围内的整数,而“within”包含所有值。 完全由值组成的range_list中使用'within'与使用'in'相同(这不是错误)。
Nested classes |
|
---|---|
枚举 |
PluralRules.PluralType 复数类型和PluralRules。 |
Constants |
|
---|---|
String |
KEYWORD_FEW 'paucal'或其他特殊复数形式的通用名称。 |
String |
KEYWORD_MANY 阿拉伯文(11至99)复数形式的通用名称。 |
String |
KEYWORD_ONE '单数'复数形式的通用名称。 |
String |
KEYWORD_OTHER 默认复数形式的通用名称。 |
String |
KEYWORD_TWO “双重”复数形式的通用名称。 |
String |
KEYWORD_ZERO '零'复数形式的通用名称。 |
double |
NO_UNIQUE_VALUE 当没有唯一值返回时,由 |
Fields |
|
---|---|
public static final PluralRules |
DEFAULT 接受任何数字并返回 |
Public methods |
|
---|---|
static PluralRules |
createRules(String description) 如果它是可解析的,则从描述创建一个PluralRules,否则返回null。 |
boolean |
equals(PluralRules rhs) 如果rhs等于此值,则返回true。 |
boolean |
equals(Object rhs) 指示其他某个对象是否“等于”这一个。 |
static PluralRules |
forLocale(ULocale locale, PluralRules.PluralType type) 为给定语言环境和复数类型提供对预定义的 |
static PluralRules |
forLocale(Locale locale, PluralRules.PluralType type) 为给定的 |
static PluralRules |
forLocale(ULocale locale) 提供给定语言环境的预定义基数 |
static PluralRules |
forLocale(Locale locale) 为给定的 |
Collection<Double> |
getAllKeywordValues(String keyword) 返回所有触发此关键字的值,如果此类值的数量不受限制,则返回null。 |
Set<String> |
getKeywords() 返回此 |
Collection<Double> |
getSamples(String keyword) 返回select()将返回该关键字的整数值列表,如果关键字未定义,则返回null。 |
double |
getUniqueKeywordValue(String keyword) 返回该关键字匹配,或独特的价值 |
static PluralRules |
parseDescription(String description) 解析复数规则描述并返回一个PluralRules。 |
String |
select(double number) 给定一个数字,返回适用于该数字的第一个规则的关键字。 |
String |
toString() 返回对象的字符串表示形式。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
String KEYWORD_OTHER
默认复数形式的通用名称。 该名称将返回给规则中没有其他表单应用的值。 它可以另外分配自己的规则。
常数值:“其他”
double NO_UNIQUE_VALUE
当没有唯一值返回时由 getUniqueKeywordValue(String)
返回的值。
常数值:-0.00123456777
PluralRules createRules (String description)
如果它是可解析的,则从描述创建一个PluralRules,否则返回null。
Parameters | |
---|---|
description |
String : the rule description. |
Returns | |
---|---|
PluralRules |
the PluralRules |
boolean equals (PluralRules rhs)
如果rhs等于此值,则返回true。
Parameters | |
---|---|
rhs |
PluralRules : the PluralRules to compare to. |
Returns | |
---|---|
boolean |
true if this and rhs are equal. |
boolean equals (Object rhs)
指示其他某个对象是否“等于”这一个。
equals
方法在非空对象引用上实现等价关系:
x
, x.equals(x)
should return true
. x
and y
, x.equals(y)
should return true
if and only if y.equals(x)
returns true
. x
, y
, and z
, if x.equals(y)
returns true
and y.equals(z)
returns true
, then x.equals(z)
should return true
. x
and y
, multiple invocations of x.equals(y)
consistently return true
or consistently return false
, provided no information used in equals
comparisons on the objects is modified. x
, x.equals(null)
should return false
. 类equals
方法Object
实现对象上最可能的等价关系; 也就是说,对于任何非空参考值x
和y
,此方法返回true
当且仅当x
和y
引用同一对象( x == y
具有值true
)。
请注意,无论何时覆盖此方法,通常都需要覆盖 hashCode
方法,以便维护 hashCode
方法的一般合约,该方法声明相等对象必须具有相同的散列代码。
Parameters | |
---|---|
rhs |
Object : the reference object with which to compare. |
Returns | |
---|---|
boolean |
true if this object is the same as the obj argument; false otherwise. |
PluralRules forLocale (ULocale locale, PluralRules.PluralType type)
为给定语言环境和复数类型提供对预定义的 PluralRules
访问。
ICU根据CLDR 语言复数规则为许多地区定义了复数规则 。 对于这些预定义的规则,请参阅http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html上的CLDR页面
Parameters | |
---|---|
locale |
ULocale : The locale for which a PluralRules object is returned. |
type |
PluralRules.PluralType : The plural type (e.g., cardinal or ordinal). |
Returns | |
---|---|
PluralRules |
The predefined PluralRules object for this locale. If there's no predefined rules for this locale, the rules for the closest parent in the locale hierarchy that has one will be returned. The final fallback always returns the default rules. |
PluralRules forLocale (Locale locale, PluralRules.PluralType type)
为给定的 Locale
和复数类型提供对预定义的 PluralRules
访问。
ICU根据CLDR 语言复数规则为许多地区定义了复数规则 。 对于这些预定义的规则,请参阅http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html上的CLDR页面
Parameters | |
---|---|
locale |
Locale : The locale for which a PluralRules object is returned. |
type |
PluralRules.PluralType : The plural type (e.g., cardinal or ordinal). |
Returns | |
---|---|
PluralRules |
The predefined PluralRules object for this locale. If there's no predefined rules for this locale, the rules for the closest parent in the locale hierarchy that has one will be returned. The final fallback always returns the default rules. |
PluralRules forLocale (ULocale locale)
提供给定语言环境预定义的基数PluralRules
访问权限。 与forLocale(区域设置,PluralType.CARDINAL)相同。
ICU根据CLDR 语言复数规则为许多地区定义了复数规则 。 对于这些预定义的规则,请参阅http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html上的CLDR页面
Parameters | |
---|---|
locale |
ULocale : The locale for which a PluralRules object is returned. |
Returns | |
---|---|
PluralRules |
The predefined PluralRules object for this locale. If there's no predefined rules for this locale, the rules for the closest parent in the locale hierarchy that has one will be returned. The final fallback always returns the default rules. |
PluralRules forLocale (Locale locale)
为给定的Locale
提供对预定义的基数PluralRules
访问权限。 与forLocale(区域设置,PluralType.CARDINAL)相同。
ICU根据CLDR 语言复数规则为许多地区定义了复数规则 。 对于这些预定义的规则,请参阅http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html上的CLDR页面
Parameters | |
---|---|
locale |
Locale : The locale for which a PluralRules object is returned. |
Returns | |
---|---|
PluralRules |
The predefined PluralRules object for this locale. If there's no predefined rules for this locale, the rules for the closest parent in the locale hierarchy that has one will be returned. The final fallback always returns the default rules. |
Collection<Double> getAllKeywordValues (String keyword)
返回所有触发此关键字的值,如果此类值的数量不受限制,则返回null。
Parameters | |
---|---|
keyword |
String : the keyword |
Returns | |
---|---|
Collection<Double> |
the values that trigger this keyword, or null. The returned collection is immutable. It will be empty if the keyword is not defined. |
Set<String> getKeywords ()
返回此PluralRules
对象中使用的一组所有规则关键字。 “其他”规则默认情况下总是存在。
Returns | |
---|---|
Set<String> |
The set of keywords. |
Collection<Double> getSamples (String keyword)
返回select()将返回该关键字的整数值列表,如果关键字未定义,则返回null。 返回的集合是不可修改的。 返回的列表不完整,并且可能会有其他值返回关键字。
Parameters | |
---|---|
keyword |
String : the keyword to test |
Returns | |
---|---|
Collection<Double> |
a list of values matching the keyword. |
double getUniqueKeywordValue (String keyword)
返回该关键字匹配,或独特的价值 NO_UNIQUE_VALUE
如果关键字匹配多个值或没有为此PluralRules定义。
Parameters | |
---|---|
keyword |
String : the keyword to check for a unique value |
Returns | |
---|---|
double |
The unique value for the keyword, or NO_UNIQUE_VALUE. |
PluralRules parseDescription (String description)
解析复数规则描述并返回一个PluralRules。
Parameters | |
---|---|
description |
String : the rule description. |
Returns | |
---|---|
PluralRules |
Throws | |
---|---|
ParseException |
if the description cannot be parsed. The exception index is typically not set, it will be -1. |
String select (double number)
给定一个数字,返回适用于该数字的第一个规则的关键字。
Parameters | |
---|---|
number |
double : The number for which the rule has to be determined. |
Returns | |
---|---|
String |
The keyword of the selected rule. |
String toString ()
返回对象的字符串表示形式。 通常, toString
方法返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”以及对象的哈希码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
a string representation of the object. |