Diferencia entre la alzadora Coincidencia Flex SDK y la alzadora clasificación

Este artículo fue originalmente escrito en Inglés. Texto en otros idiomas fue proporcionada por la traducción automática.

Flex SDK tiene dos tipos de alzadoras. ¿Sabe usted la diferencia?

Ante todo, permítanme explicar lo que es un clasificador. El Alzadoras Flex SDK son clases que se han diseñado para comparar dos cadenas. Comparar sus funciones devuelven un valor numérico para decir cuál de los dos puntos es mayor o menor.

He aquí un ejemplo:

<fx:Declarations>
    <s:SortingCollator id="c1"/>
    </fx:Declarations>
    <s:VGroup>
        <s:TextInput id="uiInput1" text="ABC"/>
        <s:TextInput id="uiInput2" text="ABC"/>
        <mx:Text id="uiOutput" text="{c1.compare(uiInput1.text, uiInput2.text)}"/>
    </s:VGroup>

Este ejemplo muestra 0 como el resultado de comparar por defecto. A medida que altera las entradas, el resultado se convierte en -1 si la primera entrada es menor o 1 si es mayor. Ver las capturas de pantalla por debajo de.

 width=

 width=

 width=

La diferencia en la clasificación

Ahora, vamos a hablar de las diferencias de Igualar y clasificar Alzadoras. En realidad, son esencialmente iguales, pero han dado algunos parámetros específicos iniciales colación bueno para que aparezca la cadena en general (MatchingCollator) o bien los parámetros para la clasificación general de cadena (SortingCollator). Siguiente ejemplo ilustra por qué dos alzadoras diferentes son útiles.

Suponga que tiene los siguientes elementos de la matriz. Desea ordenar los elementos y buscar una cadena específica de los elementos.

  • naïve
  • Naïve
  • NAÏVE
  • naive
  • Naive
  • NAIVE
  • adolescent
  • youthful

Si bien ordenar los elementos con un SortingCollator clase con “en_US” (Inglés se habla en EE.UU.) local, puede obtener un resultado después de clase.

  • adolescent
  • naive
  • Naive
  • NAIVE
  • naïve
  • Naïve
  • NAÏVE
  • youthful

Este ordenamiento tiene sentido para la mayoría de los usos. (Al menos eso es lo que hemos esperado.) Las letras minúsculas son lo primero en mayúsculas; letras sin acento en lo primero que tienen acento.

Por otro lado, si usted ordenar los elementos con un MatchingCollator, se obtiene el siguiente resultado. (Resultado puede variar ya que algunos atributos son ignorados.)

  • adolescent
  • Naïve
  • NAÏVE
  • naive
  • naïve
  • NAIVE
  • Naive
  • youthful

Usted puede notar que mayúsculas / minúsculas de pedidos y carácter con acento de pedidos no son consistentes con una MatchingCollator clase. De hecho, la MachingCollator la clase no está diseñado para la clasificación.

La diferencia en el juego

Ahora, Supongo que quiere buscar una cadena específica, “naive“, de la lista. Con una SortingCollator clase, se obtiene el siguiente resultado:

  • naive

Sí, sólo una cadena con un SortingCollator clase.

Por otro lado, con una MatchingCollator clase, se obtiene el siguiente resultado.

  • Naïve
  • NAÏVE
  • naive
  • naïve
  • NAIVE
  • Naive

Como se puede ver, la comparación de cadenas se hizo en forma más indulgente con MatchingCollator clase. A menudo, esta indulgencia es deseada en la búsqueda cadenas.

Aunque SortingCollator y MatchingCollator comportan de manera diferente como lo hemos visto más arriba, las clases son más o menos igual por debajo de. De hecho, se puede silenciar al otro hermano, estableciendo sus propiedades. Si necesita un control más detalles de la clasificación / juego comportamiento, también manipular las propiedades. Por favor, consulte las referencias Flex SDK para obtener más detalles.

Referencias

El programa de ejemplo utilizado en este artículo

<?xml version ="1.0" encoding ="UTF-8"?>
   <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
   >
   <fx:Declarations>
      <s:SortingCollator id ="sortingCollator" Local ="en_US"/>
      <s:MatchingCollator id ="matchingCollator" Local ="en_US"/>
      <s:Sort id ="sort"/>
      <s:ArrayCollection id ="arrayCollection" sort ="{tipo}" fuente ="{lista de palabras}"/>
   </fx:Declarations>
   <fx:Script>
      <![CDATA[
         private static const lista de palabras:= Array [
            "naïve", "Naïve", "NAÏVE",
            "naive", "Naive", "NAIVE",
            "adolescent", "youthful" ];
         private function setCollator(useSortingCollator:Boolean):void
         {
            const alzadora:Objeto = useSortingCollator ?
            sortingCollator : matchingCollator;
            sort.compareFunction = function (un:Objeto, b:Objeto, campos:Matriz):int
               { return collator.compare(un as Cadena, b as Cadena); }
            arrayCollection.refresh();
            uiResult.text = "Sort Result:\n" + arrayCollection.toString();
            uiResult.text += "\n\nStinrgs equal to 'naive' are:\n";
            for (var yo:uint = 0; yo < arrayCollection.length; yo)
            {
               if (!collator.compare(ArrayCollection[yo], "naive"))
               uiResult.text = ArrayCollection[yo] + "\n";
            }
         }
      ]]>
   </fx:Script>
   <s:VGroup paddingTop="20" paddingBottom="20"
         paddingLeft ="20" paddingRight ="20" height ="100%">
      <s:Button label ="Use SortingCollator" click ="setCollator(true)"/>
      <s:Button label ="Use MatchingCollator" click ="setCollator(false)"/>
      <s:TextArea id ="uiResult" height ="100%"/>
   </s:VGroup>
    </s:Application>

Deja un comentario