Пакет | flash.globalization |
Класс | public final class Collator |
Наследование | Collator Object |
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Этот класс использует службы сравнения строк, предоставляемые операционной системой. Выполнение сравнения варьируется в зависимости от идентификатора локали, переданного при создании экземпляра класса. ActionScript сохраняет строки с использованием набора символов Юникод. Логические операторы сравнения строк (==, !=, <<=,>,> =) используют для сравнения элементы кода Юникод. В большинстве случаев результирующий порядок сортировки не соответствует правилам для определенного языка и региона и поэтому не должен использоваться для сортировки строк, представленных в пользовательском интерфейсе. Методы сравнения этого класса, напротив, выполняют сортировку с учетом этих правил.
Ниже приводятся примеры, в которых порядок сортировки варьируется в зависимости от языка.
- В английском языке строчная «а» стоит перед прописной «А», а прописная «А» — перед строчной «b».
- В шведском языке «ö» стоит после «z», а в немецком «ö» стоит после «o».
- В традиционном варианте испанского буква «ch» рассматривается как один символ и ставится между «c» и «d».
Порядок сортировки может отличаться даже в пределах одного языка и региона в зависимости от области использования. Например в немецком языке предусмотрен особый порядок сортировки для имен в телефонной книге, который отличается от порядка сортировки слов в словарях. В китайском и японском языках существуют разные способы сортировки иероглифов: по произношению или по идеографическому корню и числу штрихов в глифе. В испанском и грузинском языках проводится различие между современной и традиционной сортировкой.
Методы сравнения в этом классе обеспечивают два основных режима использования. Этими режимами управляет параметр initialMode
конструктора Collator()
. Используемый по умолчанию режим «сортировка» предназначен для сортировки элементов перед отображением для конечного пользователя. В этом режиме выполняется более строгое сравнение, чтобы одинаковые элементы сортировались согласованно. Например, прописные буквы и строчные буквы не рассматриваются как одинаковые. В режиме «сравнение» выполняется менее строгое сравнение. Например, в этом режиме не проводится различие между строчными и прописными буквами. Ниже приводится пример, демонстрирующий оба режима.
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!"); }
Даже когда конструктору передается параметр localID, как показано выше, поведение сравнения может варьироваться для пользователя в зависимости от настроек его операционной системы и использования резервной локали (если запрашиваемая локаль не поддерживается).
Свойство | Определено | ||
---|---|---|---|
actualLocaleIDName : String [только для чтения]
Имя фактического идентификатора локали, используемого этим объектом Collator. | Collator | ||
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | ||
ignoreCase : Boolean
Когда это свойство имеет значение true, идентичные строки и строки, отличающиеся только регистром букв, рассматриваются как равные. | Collator | ||
ignoreCharacterWidth : Boolean
Когда это свойство имеет значение true, полноширинные и полуширинные формы некоторых китайских и японских символов рассматриваются как одинаковые. | Collator | ||
ignoreDiacritics : Boolean
Когда это свойство имеет значение true, строки, в которых используются одинаковые базовые символы, но разные акценты или диакритические знаки, рассматриваются как одинаковые. | Collator | ||
ignoreKanaType : Boolean
Когда это свойство имеет значение true, строки, которые отличаются только типом используемого символа кана, рассматриваются как одинаковые. | Collator | ||
ignoreSymbols : Boolean
Когда это свойство имеет значение true, при сортировке или сравнении игнорируются символьные знаки, включая пробелы, символы валют, математическим символы и др. | Collator | ||
lastOperationStatus : String [только для чтения]
Состояние самой последней операции, выполненной этим объектом Collator. | Collator | ||
numericComparison : Boolean
Управляет обработкой числовых значений, включенных в строки, в ходе сравнения строк. | Collator | ||
requestedLocaleIDName : String [только для чтения]
Имя запрашиваемого идентификатора локали, переданного конструктору этого объекта Collator. | Collator |
Метод | Определено | ||
---|---|---|---|
Создает новый объект Collator для сравнения строк в соответствии с правилами заданной локали. | Collator | ||
Сравнивает две строки и возвращает целое число, указывающее на то, меньше, равна или больше первая строка второй. | Collator | ||
Сравнивает две строки и возвращает логическое значение, указывающее на то, равны ли эти строки. | Collator | ||
[статические]
Перечисляет все имена идентификаторов локалей, поддерживаемые этим классом. | Collator | ||
Показывает, определено ли заданное свойство для объекта. | Object | ||
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра. | Object | ||
Показывает наличие заданного свойства и его перечисляемость. | Object | ||
Задает доступность динамического свойства для операций цикла. | Object | ||
Возвращает строковое представление этого объекта, отформатированного в соответствии со стандартами, принятыми для данной локали. | Object | ||
Возвращает строковое представление заданного объекта. | Object | ||
Возвращает элементарное значение заданного объекта. | Object |
actualLocaleIDName | свойство |
actualLocaleIDName:String
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Имя фактического идентификатора локали, используемого этим объектом Collator.
В зависимости от операционной системы и значения параметра requestedLocaleIDName
, передаваемого конструктору Collator()
, имя может иметь одно из трех значений.
- Если запрашиваемая локаль не является
LocaleID.DEFAULT
и поддерживается операционной системой, тогда возвращаемое имя совпадает со значением свойстваrequestedLocaleIDName
. - Если константа
LocaleID.DEFAULT
использована в качестве значения параметраrequestedLocaleIDName
конструктора, то используется имя текущей локали, заданной в операционной системе пользователя. ЗначениеLocaleID.DEFAULT
сохраняет настройку ОС, заданную пользователем. Передача явного значения в качестве параметраrequestedLocaleIDName
не обязательно дает тот же результат, что использованиеLocaleID.DEFAULT
, даже если при этом используются одинаковые имена идентификатора локали. Пользователь мог задать в своей системе пользовательские настройки локали, и запрос явного имени идентификатора локали вместо использования константыLocaleID.DEFAULT
в программе не позволит извлечь эти пользовательские настройки. - Если система не поддерживает имя
requestedLocaleIDName
, определенное в конструкторе, то используется резервное имя идентификатора локали.
Реализация
public function get actualLocaleIDName():String
Связанные элементы API
ignoreCase | свойство |
ignoreCase:Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Когда это свойство имеет значение true, идентичные строки и строки, отличающиеся только регистром букв, рассматриваются как равные. Например, метод compare("ABC", "abc")
возвращает значение true
, когда свойство ignoreCase
имеет значение true
.
Преобразование регистра строки выполняется по правилам для указанной локали.
Когда свойство ignoreCase
имеет значение false, символы верхнего и нижнего регистра рассматриваются как разные.
Когда этому свойству задано значение и отсутствуют ошибки или предупреждения, свойству lastOperationStatus
задается значение:
-
LastOperationStatus.NO_ERROR
В противном случае в качестве значения свойства lastOperationStatus
задается одна из констант, определенных в классе LastOperationStatus.
Значение по умолчанию – true
, если для параметра initialMode
конструктора Collator()
установлено значение Collator.MATCHING
. Значение по умолчанию – false
, если для параметра initialMode
конструктора Collator()
установлено значение Collator.SORTING
.
Реализация
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, полноширинные и полуширинные формы некоторых китайских и японских символов рассматриваются как одинаковые.
Для обеспечения совместимости с существующими стандартами для китайских и японских наборов символов Юникод обеспечивает коды символов для полноширинных и полуширинных форм некоторых символов. Например, когда свойство 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, строки, в которых используются одинаковые базовые символы, но разные акценты или диакритические знаки, рассматриваются как одинаковые. Например, метод compare("coté", "côte")
возвращает значение true
, когда свойство ignoreDiacritics
имеет значение 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, строки, которые отличаются только типом используемого символа кана, рассматриваются как одинаковые. Например, compare("カナ", "��")
возвращает значение true
, когда свойство ignoreKanaType
имеет значение 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, при сортировке или сравнении игнорируются символьные знаки, включая пробелы, символы валют, математическим символы и др. Например, строки «OBrian», «O'Brian» и «O Brian» рассматриваются как одинаковые, когда свойство ignoreSymbols
имеет значение true
.
Если свойство ignoreSymbols
имеет значение false, при сравнении строк учитываются символьные знаки.
Когда этому свойству задано значение и отсутствуют ошибки или предупреждения, свойству lastOperationStatus
задается значение:
-
LastOperationStatus.NO_ERROR
В противном случае в качестве значения свойства lastOperationStatus
задается одна из констант, определенных в классе LastOperationStatus.
Значением по умолчанию является false.
Реализация
public function get ignoreSymbols():Boolean
public function set ignoreSymbols(value:Boolean):void
Связанные элементы API
lastOperationStatus | свойство |
lastOperationStatus:String
[только для чтения] Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Состояние самой последней операции, выполненной этим объектом Collator. Свойство lastOperationStatus
задается каждый раз при вызове конструктора или метода этого класса или при задании значения для другого свойства. Другие возможные значения см. в описании соответствующего метода.
Реализация
public function get lastOperationStatus():String
Связанные элементы API
numericComparison | свойство |
numericComparison:Boolean
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Управляет обработкой числовых значений, включенных в строки, в ходе сравнения строк.
Когда свойство numericComparison
имеет значение true
, метод compare преобразует числа, включенные в строки, в числовые значения для сравнения.
Когда это свойство имеет значение false
, в ходе сравнения эти числа рассматриваются как коды символов и сортируются в соответствии с правилами сортировки символов для указанной локали.
Например, когда это свойство имеет значение true для идентификатора локали en-US, строки «version1», «version10» и «version2» сортируются в следующем порядке: version1 < version2 < version10.
Когда это свойство имеет значение false для локали en-US, эти же строки сортируются по-другому: 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.
Если использовано значение 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
, определяется резервная локаль. Если используется резервный вариант, свойству lastOperationStatus
задается значение, указывающее тип резервной локали.
Параметр initialMode
задает различные параметры сравнения для распространенных случаев применения. Может иметь одно из следующих значений.
CollatorMode.SORTING
: задает параметры сравнения для обычной лингвистической сортировки, такой как сортировка списка текстовых строк, которые отображаются для конечного пользователя. В этом режиме при сравнении строк проводится различие между строчными и прописными буквами, символами с акцентом и без, а также учитываются другие отличия.CollatorMode.MATCHING
: задает параметры сравнения для общего применения, такого как определение эквивалентности двух строк. В этом режиме сравнение выполняется без учета строчных и прописных букв, символов с акцентами и других отличий.
Ниже приводится пример сортированного списка, созданного объектом Collator для локали en-US (английская, США) с использованием режима CollatorMode.SORTING
.
Как показано выше, все символы рассматриваются как разные значения, но перечислены в порядке лингвистической сортировки.
Ниже приводится пример сортированного списка, созданного объектом Collator для локали en-US (английская, США) с использованием режима CollatorMode.MATCHING
.
Как показано выше, некоторые символы находятся в лингвистически правильном порядке и рассматриваются как имеющие одно и то же значение символа.
Для более точного управления порядком сортировки можно изменять значения свойств объекта Collator, таких как Collator.ignoreCase
или Collator.ignoreDiacritics
.
Для сравнения приводится соответствующий пример сортировки с помощью стандартного метода Array.sort()
, который не учитывает локали.
Как видно, все символы сортируются просто по числовому значению Юникод. Его нельзя считать корректным с лингвистической точки зрения.
Чтобы использовать текущие пользовательские настройки операционной системы, необходимо передать статическое значение LocaleID.DEFAULT
в параметре requestedLocaleIDName
конструктора.
Для некоторых локалей предусмотрено несколько вариантов порядка сортировки. Например, в немецком языке для телефонных книг и словарей используются разный порядок сортировки. В китайском языке слова обычно поддерживаются путем транслитерации символов в систему пиньинь. Разные порядки сортировки можно выбирать путем добавления ключевого слова collation в строку, передаваемую в параметре 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
Когда запрашиваемый идентификатора локали недоступен, свойство lastOperationStatus
получает одно из следующих значений:
LastOperationStatus.USING_FALLBACK_WARNING
LastOperationStatus.USING_DEFAULT_WARNING
В противном случае в качестве значения свойства lastOperationStatus
задается одна из констант, определенных в классе LastOperationStatus.
Дополнительные сведения о перечисленных выше предупреждениях и других возможных значениях свойства lastOperationStatus
см. в описании класса LastOperationStatus
.
requestedLocaleIDName:String — Объект String , который будет использоваться данным объектом Collator.
| |
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()
.
Когда этот метод вызывается и успешно выполняется, свойство 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()
.
Когда этот метод вызывается и успешно выполняется, свойство lastOperationStatus
получает значение:
LastOperationStatus.NO_ERROR
В противном случае в качестве значения свойства lastOperationStatus
задается одна из констант, определенных в классе LastOperationStatus
.
Параметры
string1:String — Первая строка сравнения.
| |
string2:String — Вторая строка сравнения.
|
Boolean — Логическое значение, указывающее на то равны строки (true ) или нет (false ).
|
Выдает
TypeError — когда обязательный параметр имеет нулевое значение.
| |
ArgumentError — когда параметр содержит недопустимое значение.
|
Связанные элементы API
getAvailableLocaleIDNames | () | метод |
public static function getAvailableLocaleIDNames():Vector.<String>
Язык версии: | ActionScript 3.0 |
Версии среды выполнения: | Flash Player 10.1, AIR 2 |
Перечисляет все имена идентификаторов локалей, поддерживаемые этим классом.
Если этот класс совсем не поддерживается текущей операционной системой, данный метод возвращает нулевое значение.
ВозвращаетVector.<String> — Вектор строк, содержащих все имена идентификаторов локалей, поддерживаемые этим классом.
|
- Перечисляется массив имен идентификаторов локали, включая идентификатор локали операционной системы по умолчанию (указанный в свойстве
LocaleID.DEFAULT
). - Создается объект Collator для каждого имени идентификатора локали с использованием режима сортировки (по умолчанию).
- Отображаются имена запрошенных и фактически используемых идентификаторов локали и значение свойства
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:34 AM Z