| 包 | flash.globalization |
| 类 | public final class Collator |
| 继承 | Collator Object |
| 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10.1, AIR 2 |
此类使用操作系统提供的字符串比较服务。这些比较随创建类实例时提供的区域设置标识符的不同而不同。ActionScript 使用 Unicode 字符集存储字符串。布尔型字符串比较运算符(==、!=、<、<=、>、>=)使用 Unicode 代码点进行比较。在多数情况下,生成的排序顺序与特定语言和区域的约定不匹配,因此不应该用于对用户界面中显示的字符串进行排序。而此类中的比较方法提供了符合这些约定的顺序。
以下是一些示例,其中排序顺序随语言的不同而不同:
- 在英语中,小写 a 在大写 A 之前,而大写 A 在小写 b 之前。
- 在瑞典语中,ö 在 z 之后,而在德语中,ö 在 o 之后
- 在传统西班牙语中,ch 是一个排在 c 和 d 之间的字符
甚至在同一语言和区域内,排序顺序也可以根据使用情况有所不同。例如,在德语中,电话簿中的姓名与词典中的词的排序顺序不同。在中文和日语中,表意字排序有多种方式:即按读音或按字形中使用的表意字字根和笔画数。在西班牙语和格鲁吉亚语中,现代排序和传统排序之间存在差异。
此类中的比较方法提供了两种主要使用模式。Collator() 构造函数的 initialMode 参数控制这些模式。默认“排序”模式适用于将显示给最终用户的排序项目。在此模式中,比较更为严格,以确保在其他方面相同的项目以一致的方式排序。例如,大写字母和小写字母不作为相同内容进行比较。在“匹配”模式中,比较相对宽松。例如,在此模式中大写和小写字母会被视为相同。以下是一个演示这两种模式的示例:
var sortingCollator:Collator = new Collator("en-US", CollatorMode.SORTING);
var words:Array = new Array("Airplane" , "airplane", "boat", "Boat");
words.sort(sortingCollator.compare);
trace(words);
var matchingCollator:Collator = new Collator("en-US", CollatorMode.MATCHING);
if (matchingCollator.equals("Car", "car")) {
trace("The words match!");
}
即使如上所示向构造函数提供区域设置 ID 参数,排序行为也可能因用户的操作系统设置而随用户变化,还可能在请求的区域设置不受支持时,随是否使用回退区域设置而不同。
| 属性 | 由以下参数定义 | ||
|---|---|---|---|
| actualLocaleIDName : String [只读]
此 Collator 对象使用的实际区域设置 ID 的名称。 | Collator | ||
![]() | constructor : Object
对类对象或给定对象实例的构造函数的引用。 | Object | |
| ignoreCase : Boolean
当此属性设置为 true 时,完全相同的字符串和仅字母大小写不同的字符串比较结果为相等。 | Collator | ||
| ignoreCharacterWidth : Boolean
当此属性为 true 时,某些全角和半角形式的中文和日文字符比较结果为相等。 | Collator | ||
| ignoreDiacritics : Boolean
当此属性设置为 true 时,使用相同基本字符,但重音符号或其它音调符号不同的字符串,比较结果为相等。 | Collator | ||
| ignoreKanaType : Boolean
当此属性设置为 true 时,会将区别仅在于使用了不同的 kana 字符类型的字符串视为相等。 | Collator | ||
| ignoreSymbols : Boolean
当此属性设置为 true 时,排序或匹配时将忽略空格、货币符号、数学符号和其它类型符号等符号字符。 | Collator | ||
| lastOperationStatus : String [只读]
此 Collator 对象执行的最近操作的状态。 | Collator | ||
| numericComparison : Boolean
控制如何在进行字符串比较期间处理嵌入到字符串的数值。 | Collator | ||
| requestedLocaleIDName : String [只读]
传递到此 Collator 对象的构造函数的请求的区域设置 ID 名称。 | Collator | ||
| 方法 | 由以下参数定义 | ||
|---|---|---|---|
构造新的 Collator 对象,以根据指定的区域设置的约定提供字符串比较。 | Collator | ||
比较两个字符串并返回一个整数值,表示第一个字符串是小于、等于还是大于第二个字符串。 | Collator | ||
比较两个字符串并返回表示字符串是否相等的布尔值。 | Collator | ||
[静态]
列出此类支持的所有区域设置 ID 名称。 | Collator | ||
![]() |
表示对象是否已经定义了指定的属性。 | Object | |
![]() |
表示 Object 类的实例是否在指定为参数的对象的原型链中。 | Object | |
![]() |
表示指定的属性是否存在、是否可枚举。 | Object | |
![]() |
设置循环操作动态属性的可用性。 | Object | |
![]() |
返回此对象的字符串表示形式,其格式设置遵守区域设置特定的约定。 | Object | |
![]() |
返回指定对象的字符串表示形式。 | Object | |
![]() |
返回指定对象的原始值。 | Object | |
actualLocaleIDName | 属性 |
actualLocaleIDName:String [只读] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10.1, AIR 2 |
此 Collator 对象使用的实际区域设置 ID 的名称。
根据操作系统和传递给 Collator() 构造函数的 requestedLocaleIDName 参数的值,该名称有三种可能的值。
- 如果请求的区域设置不是
LocaleID.DEFAULT且操作系统支持该请求的区域设置,则返回的名称与requestedLocaleIDName属性相同。 - 如果将
LocaleID.DEFAULT用作构造函数的requestedLocaleIDName参数的值,则使用由用户操作系统指定的当前区域设置的名称。LocaleID.DEFAULT值保留用户在操作系统中的自定义设置。显式值作为requestedLocaleIDName参数传递与使用LocaleID.DEFAULT所产生的结果不一定相同,即使两个区域设置 ID 名称相同,也是如此。用户可能已在他们的计算机上对区域设置进行了自定义,通过请求显式区域设置 ID 名称(而不是使用LocaleID.DEFAULT),您的应用程序将不会检索这些自定义设置。 - 如果系统不支持在构造函数中指定的
requestedLocaleIDName,则会提供回退区域设置 ID 名称。
实现
public function get actualLocaleIDName():String相关 API 元素
ignoreCase | 属性 |
ignoreCase:Boolean| 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10.1, AIR 2 |
当此属性设置为 true 时,完全相同的字符串和仅字母大小写不同的字符串比较结果为相等。例如,当 ignoreCase 属性设置为 true 时,compare("ABC", "abc") 将返回 true。
字符串的大小写转换遵守指定的区域设置的规则。
当 ignoreCase 属性为 false 时,大小写字符不相等。
为此属性分配了值并且未引发错误或警告时,将 lastOperationStatus 属性设置为:
-
LastOperationStatus.NO_ERROR
否则,将 lastOperationStatus 属性设置为 LastOperationStatus 类中定义的一个常量。
当 Collator() 构造函数的 initialMode 参数设置为 Collator.MATCHING 时,默认值为 true。当 Collator() 构造函数的 initialMode 参数设置为 Collator.SORTING 时,默认值为 false。
实现
public function get ignoreCase():Boolean public function set ignoreCase(value:Boolean):void相关 API 元素
ignoreCharacterWidth | 属性 |
ignoreCharacterWidth:Boolean| 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10.1, AIR 2 |
当此属性为 true 时,某些全角和半角形式的中文和日文字符比较结果为相等。
为与中文和日文字符集的现有标准兼容,Unicode 为某些全角和半角形式的字符提供字符代码。例如,当 ignoreCharacterWidth 属性设置为 true 时,compare("Aア", "Aア") 返回 true。
如果将 ignoreCharacterWidth 属性设置为 false,则全角和半角形式的字符不相等。
为此属性分配了值并且未引发错误或警告时,将 lastOperationStatus 属性设置为:
-
LastOperationStatus.NO_ERROR
否则,将 lastOperationStatus 属性设置为 LastOperationStatus 类中定义的其中一个常量。
默认值为 false。
实现
public function get ignoreCharacterWidth():Boolean public function set ignoreCharacterWidth(value:Boolean):void相关 API 元素
ignoreDiacritics | 属性 |
ignoreDiacritics:Boolean| 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10.1, AIR 2 |
当此属性设置为 true 时,使用相同基本字符,但重音符号或其它音调符号不同的字符串,比较结果为相等。例如,当 ignoreDiacritics 属性设置为 true 时,compare("coté", "côte") 返回 true。
当 ignoreDiacritics 设置为 false 时,带有音调符号或重音符号的基本字符被视为不相等。
为此属性分配了值并且未引发错误或警告时,将 lastOperationStatus 属性设置为:
-
LastOperationStatus.NO_ERROR
否则,将 lastOperationStatus 属性设置为 LastOperationStatus 类中定义的其中一个常量。
默认值为 false。
实现
public function get ignoreDiacritics():Boolean public function set ignoreDiacritics(value:Boolean):void相关 API 元素
ignoreKanaType | 属性 |
ignoreKanaType:Boolean| 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10.1, AIR 2 |
当此属性设置为 true 时,会将区别仅在于使用了不同的 kana 字符类型的字符串视为相等。例如,当 ignoreKanaType 属性设置为 true 时,compare("カナ", "かな") 返回 true。
如果将 ignoreKanaType 设置为 false,则引用相同音节的平假名和片假名字符不相等。
为此属性分配了值并且未引发错误或警告时,将 lastOperationStatus 属性设置为:
-
LastOperationStatus.NO_ERROR
否则,将 lastOperationStatus 属性设置为 LastOperationStatus 类中定义的其中一个常量。
默认值为 false。
实现
public function get ignoreKanaType():Boolean public function set ignoreKanaType(value:Boolean):void相关 API 元素
ignoreSymbols | 属性 |
ignoreSymbols:Boolean| 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10.1, AIR 2 |
当此属性设置为 true 时,排序或匹配时将忽略空格、货币符号、数学符号和其它类型符号等符号字符。例如,当 ignoreSymbols 属性设置为 true 时,“OBrian”、“O'Brian”和“O Brian”字符串都被视为相等。
如果 ignoreSymbols 属性为 false,则字符串比较将考虑符号字符。
为此属性分配了值并且未引发错误或警告时,将 lastOperationStatus 属性设置为:
-
LastOperationStatus.NO_ERROR
否则,将 lastOperationStatus 属性设置为 LastOperationStatus 类中定义的其中一个常量。
默认值为 false。
实现
public function get ignoreSymbols():Boolean public function set ignoreSymbols(value:Boolean):void相关 API 元素
lastOperationStatus | 属性 |
numericComparison | 属性 |
numericComparison:Boolean| 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10.1, AIR 2 |
控制如何在进行字符串比较期间处理嵌入到字符串的数值。
当 numericComparison 属性设置为 true 时,比较方法将出现在字符串中的数字转换为数值以供比较。
当此属性设置为 false 时,比较时将把数字视为字符代码,并根据指定区域设置中对字符排序所用的规则对它们进行排序。
例如,对于区域设置 ID“en-US”,当此属性为 true 时,字符串“version1”、“version10”和“version2”按以下顺序排序:version1 < version2 < version10。
对于“en-US”,当此属性为 false 时,上述同样的字符串按以下顺序排序:version1 < version10 < version2。
为此属性分配了值并且未引发错误或警告时,将 lastOperationStatus 属性设置为:
-
LastOperationStatus.NO_ERROR
否则,将 lastOperationStatus 属性设置为 LastOperationStatus 类中定义的其中一个常量。
默认值为 false。
实现
public function get numericComparison():Boolean public function set numericComparison(value:Boolean):void相关 API 元素
requestedLocaleIDName | 属性 |
requestedLocaleIDName:String [只读] | 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10.1, AIR 2 |
传递到此 Collator 对象的构造函数的请求的区域设置 ID 名称。
如果使用了 LocaleID.DEFAULT 值,则返回的名称将是“i-default”。如果应用了回退区域设置,则实际使用的区域设置可能与请求的区域设置不同。可以使用 actualLocaleIDName 属性检索实际区域设置的名称。
实现
public function get requestedLocaleIDName():String相关 API 元素
Collator | () | 构造函数 |
public function Collator(requestedLocaleIDName:String, initialMode:String = "sorting")| 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10.1, AIR 2 |
构造新的 Collator 对象,以根据指定的区域设置的约定提供字符串比较。
如果当前操作系统不支持在 requestedLocaleIDName 参数中传递到的区域设置 ID,则确定一个回退区域设置。如果使用了回退,则设置 lastOperationStatus 属性以表示回退类型。
initialMode 参数设置供常规使用的多种排序选项。它可以设置为下列值之一:
CollatorMode.SORTING:设置用于常规语言排序(例如对显示给最终用户的文本字符串列表进行排序)的排序选项。在此模式下,进行字符串比较时考虑大写和小写字母、重音符号及其它特定于区域设置的区别。CollatorMode.MATCHING:设置供常规使用(例如确定两个字符串是否等效)的排序选项。在此模式下,进行字符串比较时忽略大写和小写字母、重音符号等区别。
以下是使用带有区域设置 ID“en-US”(美国英语)和 CollatorMode.SORTING 选项的 Collator 创建的排序列表的示例:
如上所示,所有字符均视为具有不同值,但按语言顺序排序。
以下是使用带有区域设置 ID“en-US”(美国英语)和 CollatorMode.MATCHING 选项的 Collator 创建的排序列表的示例:
如上所示,某些字符按语言顺序排序并被视为具有相同字符值。
要更细致的控制排序顺序,可以更改 Collator.ignoreCase 或 Collator.ignoreDiacritics 等 collator 属性。
作为参考,此处提供了一个使用不支持区域设置识别的标准 Array.sort() 完成排序的相应示例:
如上所示,所有字符均以 Unicode 数值顺序简单排序。在语言方面其意义并不大。
要使用用户的当前操作系统首选项,请将 requestedLocaleIDName 参数中的静态值 LocaleID.DEFAULT 传递到构造函数。
有些区域设置具有多种排序顺序变体。例如,在德语中,一种排序顺序用于电话号码簿,另一种排序顺序用于词典。中文中,通常对字提供字符音译为拼音的支持。可以通过在 requestedLocaleIDName 参数中传递给构造函数的字符串中包含“排序”关键字来选择这些不同的排序顺序。
var germanPhonebook:LocaleID = new LocaleID("de-DE@collation=phonebook");
var chinesePinyin:LocaleID = new LocaleID("zh-Hant@collation=pinyin");
排序字符串的可能值如下所示,括号中显示了所影响的语言:
如果主机平台不支持请求的排序类型,则使用回退并设置 lastOperationStatus 属性,以表示选择了回退。可以使用 actualLocaleIDName 属性来确定用作回退的值,如下面的示例所示:
var collator:Collator = new Collator("fr-FR");
if (collator.lastOperationStatus == LastOperationStatus.USING_FALLBACK_WARNING)
{
trace ("Using fallback locale: " + collator.actualLocaleIDName);
}
构造函数成功后,将 lastOperationStatus 属性设置为:
-
LastOperationStatus.NO_ERROR
当请求的区域设置 ID 不可用时,则将 lastOperationStatus 属性设置为下列属性值之一:
LastOperationStatus.USING_FALLBACK_WARNINGLastOperationStatus.USING_DEFAULT_WARNING
否则,将 lastOperationStatus 属性设置为 LastOperationStatus 类中定义的其中一个常量。
有关上面列出的警告以及 lastOperationStatus 的其他可能值的详细信息,请参阅 LastOperationStatus 类中的说明。
requestedLocaleIDName:String — 此 Collator 对象要使用的 String。
| |
initialMode:String (default = "sorting") — 用于指定初始排序模式的字符串值。默认值是 CollatorMode.SORTING。有关可用模式的列表,请参阅 CollatorMode 类。
|
引发
TypeError — 当 requestedLocaleIDName 参数为 null 时。
| |
ArgumentError — 当 requestedLocaleIDName 参数包含无效值时。
|
相关 API 元素
compare | () | 方法 |
public function compare(string1:String, string2:String):int| 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10.1, AIR 2 |
比较两个字符串并返回一个整数值,表示第一个字符串是小于、等于还是大于第二个字符串。比较将使用适用于 Collator() 构造函数中指定的区域设置 ID 的排序顺序规则。
调用此方法并成功完成后,将 lastOperationStatus 属性设置为:
LastOperationStatus.NO_ERROR
否则,将 lastOperationStatus 属性设置为 LastOperationStatus 类中定义的一个常量。
参数
string1:String — 第一个比较字符串。
| |
string2:String — 第二个比较字符串。
|
int — 一个整数值,表示第一个字符串是小于、等于或大于第二个字符串。
|
引发
TypeError — 当必需的参数为空时。
| |
ArgumentError — 当参数包含无效值时。
|
相关 API 元素
equals | () | 方法 |
public function equals(string1:String, string2:String):Boolean| 语言版本: | ActionScript 3.0 |
| 运行时版本: | Flash Player 10.1, AIR 2 |
比较两个字符串并返回表示字符串是否相等的布尔值。比较将使用适用于 Collator() 构造函数中指定的区域设置 ID 的排序顺序规则。
调用此方法并成功完成后,将 lastOperationStatus 属性设置为:
LastOperationStatus.NO_ERROR
否则,将 lastOperationStatus 属性设置为 LastOperationStatus 类中定义的一个常量。
参数
string1:String — 第一个比较字符串。
| |
string2:String — 第二个比较字符串。
|
Boolean — 一个布尔值,表示字符串相等 (true) 还是不相等 (false)。
|
引发
TypeError — 当必需的参数为空时。
| |
ArgumentError — 当参数包含无效值时。
|
相关 API 元素
getAvailableLocaleIDNames | () | 方法 |
- 循环访问区域设置 ID 名称数组,包括操作系统的默认区域设置 ID(由
LocaleID.DEFAULT指定) - 使用“排序”模式(默认)为每个区域设置 ID 名称创建 Collator 对象。
- 显示请求的和实际的区域设置 ID 名称以及
lastOperationStatus属性的值,以便能知道是否使用了回退区域设置。 - 使用每个 collator 对数据数组排序并显示排序结果。各区域设置的排序结果不同。
package {
import flash.globalization.Collator;
import flash.globalization.LocaleID;
public class CollatorExample1
{
public var col:Collator;
public function CollatorExample1():void
{
var localeNames:Array = [LocaleID.DEFAULT,
"de-DE", "sv-SE",
"fr-FR", "lt-LT",
"es-ES"];
var testSortData:Array = [
"y ", "i ", "k ", // Latvian
"acxa ", "acha ", "adxa ", // es_traditional
"n ", "ö ", "o ", "z ", "vu ", "wo ", // sw
"däd ", "daed ", // de
"öf ", "of ", // de_dictionary
"côte ", "coté " // fr
];
for each (var localeName:String in localeNames) {
col = new Collator(localeName);
trace("LocaleID requested: " + col.requestedLocaleIDName
+ "; actual: " + col.actualLocaleIDName);
trace("Last Operation Status: " + col.lastOperationStatus );
var result:Array = testSortData.sort(col.compare);
trace ("sorted data: " + result);
}
}
}
}
- 使用“匹配”模式为用户的默认区域设置创建 Collator 对象。
- 交替将
Collator.ignoreDiacritics属性设置为false和true - 比较多组包含音调符号和大小写字符的字符串。
- 显示当
Collator.ignoreDiacritics和Collator.ignoreCase属性更改时比较如何变化。
package {
import flash.display.Sprite;
import flash.globalization.Collator;
import flash.globalization.CollatorMode;
import flash.globalization.LocaleID;
public class CollatorExample2 extends Sprite
{
public var col:Collator;
public var testMatchData:Array = ["cote", "Cote", "côte", "coté"];
public var wordToMatch:String = "Cote";
public function CollatorExample2()
{
col = new Collator( LocaleID.DEFAULT, CollatorMode.MATCHING );
trace("LocaleID requested: " + col.requestedLocaleIDName
+ "; actual: " + col.actualLocaleIDName);
trace("Last Operation Status: " + col.lastOperationStatus );
trace('\n' + "ignoreCase = " + col.ignoreCase);
trace("ignoreDiacritics = " + col.ignoreDiacritics);
compareString(testMatchData, wordToMatch) // All variations of the word cote match
col.ignoreDiacritics = false;
trace('\n' + "ignoreDiacritics = false");
compareString(testMatchData, wordToMatch) // Variations with different diacritics will not match
col.ignoreCase = false;
trace('\n' + "ignoreCase = false");
compareString(testMatchData, wordToMatch) // Variations with different case will not match
}
private function compareString(stringArray:Array, keyword:String):void
{
for each(var s:String in stringArray)
{
if(col.equals(s, keyword))
{
trace(keyword + " = " + s);
}
}
}
}
}
Tue Jun 12 2018, 11:04 AM Z
隐藏继承的公共属性
显示继承的公共属性