Most visited

Recently visited

Added in API level 24

PluralRules

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'相同(这不是错误)。

Summary

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

当没有唯一值返回时,由 getUniqueKeywordValue(String)返回的值。

Fields

public static final PluralRules DEFAULT

接受任何数字并返回 KEYWORD_OTHER的默认规则。

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)

为给定语言环境和复数类型提供对预定义的 PluralRules访问。

static PluralRules forLocale(Locale locale, PluralRules.PluralType type)

为给定的 Locale和复数类型提供对预定义的 PluralRules访问。

static PluralRules forLocale(ULocale locale)

提供给定语言环境的预定义基数 PluralRules访问权限。

static PluralRules forLocale(Locale locale)

为给定的 Locale提供对预定义的基数 PluralRules访问权限。

Collection<Double> getAllKeywordValues(String keyword)

返回所有触发此关键字的值,如果此类值的数量不受限制,则返回null。

Set<String> getKeywords()

返回此 PluralRules对象中使用的所有规则关键字的集合。

Collection<Double> getSamples(String keyword)

返回select()将返回该关键字的整数值列表,如果关键字未定义,则返回null。

double getUniqueKeywordValue(String keyword)

返回该关键字匹配,或独特的价值 NO_UNIQUE_VALUE如果关键字匹配多个值或没有为此PluralRules定义。

static PluralRules parseDescription(String description)

解析复数规则描述并返回一个PluralRules。

String select(double number)

给定一个数字,返回适用于该数字的第一个规则的关键字。

String toString()

返回对象的字符串表示形式。

Inherited methods

From class java.lang.Object

Constants

KEYWORD_FEW

Added in API level 24
String KEYWORD_FEW

'paucal'或其他特殊复数形式的通用名称。

常数值:“少”

KEYWORD_MANY

Added in API level 24
String KEYWORD_MANY

阿拉伯文(11至99)复数形式的通用名称。

常值:“很多”

KEYWORD_ONE

Added in API level 24
String KEYWORD_ONE

'单数'复数形式的通用名称。

常数值:“一”

KEYWORD_OTHER

Added in API level 24
String KEYWORD_OTHER

默认复数形式的通用名称。 该名称将返回给规则中没有其他表单应用的值。 它可以另外分配自己的规则。

常数值:“其他”

KEYWORD_TWO

Added in API level 24
String KEYWORD_TWO

“双重”复数形式的通用名称。

常数值:“两”

KEYWORD_ZERO

Added in API level 24
String KEYWORD_ZERO

'零'复数形式的通用名称。

常数值:“零”

NO_UNIQUE_VALUE

Added in API level 24
double NO_UNIQUE_VALUE

当没有唯一值返回时由 getUniqueKeywordValue(String)返回的值。

常数值:-0.00123456777

Fields

DEFAULT

Added in API level 24
PluralRules DEFAULT

接受任何号码并返回 KEYWORD_OTHER的默认规则。

Public methods

createRules

Added in API level 24
PluralRules createRules (String description)

如果它是可解析的,则从描述创建一个PluralRules,否则返回null。

Parameters
description String: the rule description.
Returns
PluralRules the PluralRules

equals

Added in API level 24
boolean equals (PluralRules rhs)

如果rhs等于此值,则返回true。

Parameters
rhs PluralRules: the PluralRules to compare to.
Returns
boolean true if this and rhs are equal.

equals

Added in API level 24
boolean equals (Object rhs)

指示其他某个对象是否“等于”这一个。

equals方法在非空对象引用上实现等价关系:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values 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.
  • For any non-null reference value x, x.equals(null) should return false.

equals方法Object实现对象上最可能的等价关系; 也就是说,对于任何非空参考值xy ,此方法返回true当且仅当xy引用同一对象( 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.

forLocale

Added in API level 24
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.

forLocale

Added in API level 24
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.

forLocale

Added in API level 24
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.

forLocale

Added in API level 24
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.

getAllKeywordValues

Added in API level 24
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.

getKeywords

Added in API level 24
Set<String> getKeywords ()

返回此PluralRules对象中使用的一组所有规则关键字。 “其他”规则默认情况下总是存在。

Returns
Set<String> The set of keywords.

getSamples

Added in API level 24
Collection<Double> getSamples (String keyword)

返回select()将返回该关键字的整数值列表,如果关键字未定义,则返回null。 返回的集合是不可修改的。 返回的列表不完整,并且可能会有其他值返回关键字。

Parameters
keyword String: the keyword to test
Returns
Collection<Double> a list of values matching the keyword.

getUniqueKeywordValue

Added in API level 24
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.

parseDescription

Added in API level 24
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.

select

Added in API level 24
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.

toString

Added in API level 24
String toString ()

返回对象的字符串表示形式。 通常, toString方法返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。

ObjecttoString方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @ ”以及对象的哈希码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

Returns
String a string representation of the object.

Hooray!