Comparando e classificando dados para uma cultura específica

Ordem alfabético e convenções para itens de seqüenciamento variam de cultura para cultura.Por exemplo, ordem de classificar pode ser sensível a diferenciar diferenciar maiúsculas de minúsculas ou não diferenciar diferenciar maiúsculas de minúsculas.Ele pode ser foneticamente com base ou com base na aparência do caractere.Em idiomas do Leste Asiático, classificações são ordenadas por traço e radical de ideogramas.Classifica também pode variar dependendo do pedido fundamental que ao linguagem e cultura usam para o alfabeto.Por exemplo, o linguagem sueco tem um caractere "Æ" que classifica após "Z" no alfabeto.O linguagem alemão também possui esse caractere, mas classifica-os como "criptografia AE", após "A" no alfabeto.Um aplicativo preparado para o mundo deve ser capaz de comparar e classificar dados em uma base por cultura para oferecer suporte a convenções de classificação específicas de cultura e específico a um linguagem.

Observação:   Em alguns cenários comportamento sensíveis à cultura não é desejável.Para obter mais informações sobre quando e como realizar operações de diferenciação de cultura, consulte Diferenciação de cultura operações de string.

Comparando Sequências de Caracteres

The CompareInfo classe fornece um conjunto de métodos que podem ser usados para realizar comparações de seqüência de caracteres sensíveis à cultura. The CultureInfo classe tem um CompareInfo propriedade que é uma ocorrência dessa classe. Esta propriedade define como comparar e classificar cadeias de caracteres para uma cultura específica.The Compare() método usa as informações de CompareInfo propriedade para comparar seqüências de caracteres. The String.Compare método retorna um inteiro negativo se string1 for menor que string2, zero se string1 e string2 forem iguais e um número inteiro positivo se string1 for maior que string2.

O exemplo de código a seguir ilustra como duas cadeias de caracteres podem ser avaliadas diferente, a String.Compare método, dependendo da cultura usada para executar a comparação. Primeiro, a CurrentCultureé conjunto Dinamarquês (Dinamarca) e as cadeias "Apple" e "Æble" são comparadas. O linguagem dinamarquês trata o caractere "Æ" sistema autônomo uma letra individual, classificação-la após "Z" no alfabeto.Portanto, a seqüência de caracteres "Æble" é maior que "Apple" para a cultura dinamarquesa.Em seguida, a CurrentCulture é definido como inglês (E.u.a.). e as cadeias "Apple" e "Æble" são comparadas novamente.Neste momento, a cadeia "Æble" é determinada ser menor que "Apple".O linguagem inglês trata o caractere "Æ" sistema autônomo um símbolo especial, classificando-o antes da letra "A" no alfabeto.

Imports System
Imports System.Globalization
Imports System.Threading
Imports Microsoft.VisualBasic

Public Class TestClass
   Public Shared Sub Main()
      Dim str1 As String = "Apple"
      Dim str2 As String = "Æble"
      
      ' Sets the CurrentCulture to Danish in Denmark.
      Thread.CurrentThread.CurrentCulture = New CultureInfo("da-DK")
      Dim result1 As Integer = [String].Compare(str1, str2)
      Console.WriteLine(ControlChars.Newline + "When the CurrentCulture _
         is ""da-DK""," + ControlChars.Newline + " the result of _
         comparing_{0} with {1} is: {2}", str1, str2, result1)
      
      ' Sets the CurrentCulture to English in the U.S.
      Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
      Dim result2 As Integer = [String].Compare(str1, str2)
      Console.WriteLine(ControlChars.Newline + "When the _
         CurrentCulture is""en-US""," + ControlChars.Newline + " _
         the result of comparing {0} with {1} is: {2}", str1, _
         str2,result2)
   End Sub
End Class
using System;
using System.Globalization;
using System.Threading;

public class CompareStringSample
{
   public static void Main()
   {
      string str1 = "Apple";
      string str2 = "Æble"; 

      // Sets the CurrentCulture to Danish in Denmark.
      Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK");
      // Compares the two strings.
      int result1 = String.Compare(str1, str2);
      Console.WriteLine("\nWhen the CurrentCulture is \"da-DK\",\nthe 
            result of comparing {0} with {1} is: {2}",str1, str2, 
            result1);

      // Sets the CurrentCulture to English in the U.S.
      Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
      // Compares the two strings.
      int result2 = String.Compare(str1, str2);
      Console.WriteLine("\nWhen the CurrentCulture is \"en-US\",\nthe 
            result of comparing {0} with {1} is: {2}",str1, str2, 
            result2);
   }
}

Se você executar esse código, a saída é exibida da seguinte forma:

When the CurrentCulture is "da-DK", 
the result of comparing Apple with Æble is: -1

When the CurrentCulture is "en-US", 
the result of comparing Apple with Æble is: 1

Para obter mais informações sobre seqüências de comparação, consulte Comparação de seqüências.

Usando pedidos de classificar alternativo

Algumas culturas suportam a mais de uma ordem de classificar.Por exemplo, a cultura "zh-CN" (chinês da China) oferece suporte a uma classificar por pronúncia (padrão) e uma classificar por traço contagem.Quando seu aplicativo cria um CultureInfoobjeto usando um nome de cultura, sistema autônomo "zh-CN", a ordem de classificar padrão é usado. Para especificar a ordem de classificar alternativa, o aplicativo deve criar um CultureInfo objeto usando o LCID para a ordem de classificar alternativa. Em seguida, o aplicativo deve obter um CompareInfo objeto a partir de CompareInfo Para usar nas comparações de seqüência de caracteres. Como alternativa, seu aplicativo pode criar um CompareInfo objeto diretamente, usando GetCompareInfo(), especificando o identificador local (LCID) para a ordem de classificar alternativa.

A tabela a seguir lista as culturas que oferecem suporte a ordens de classificar alternativo e os LCIDs para o padrão e ordens de classificar alternativa.

Nome da cultura

Cultura

LCID e nome de classificar padrão

LCID e nome de classificar alternativa

ES-ES

Espanhol (Espanha)

Internacional: 0x00000C0A

Tradicional: 0x0000040A

zh-TW

Chinês (Taiwan)

Contagem de traçado: 0x00000404

Bopomofo: 0x00030404

zh-CN

Chinês (China)

Pronúncia: 0x00000804

Contagem de traçado: 0x00020804

zh-HK

Chinês (Hong Kong SAR)

Contagem de traçado: 0x00000c04

Contagem de traçado: 0x00020c04

zh-SG

Chinês (Cingapura)

Pronúncia: 0x00001004

Contagem de traçado: 0x00021004

zh-MO

Chinês (Macau SAR)

Pronúncia: 0x00001404

Contagem de traçado: 0x00021404

ja-JP

Japonês (Japão)

Padrão: 0x00000411

Unicode: 0x00010411

ko-KR

Coreano (Coréia)

Padrão: 0x00000412

Coreano Xwansung - Unicode: 0x00010412

de-DE

Alemão (Alemanha)

Dicionário: 0x00000407

DIN de classificar de catálogo telefônico: 0x00010407

hu-HU

Húngaro (Hungria)

Padrão: 0x0000040e

classificar técnica: 0x0001040e

Ka-GE

Georgiano (Geórgia)

Tradicional: 0x00000437

classificar moderna: 0x00010437

Pesquisa strings

O aplicativo pode usar o sobrecarregado IndexOf() método para recuperar o índice baseado em zero de um caractere ou uma subseqüência de caracteres dentro de uma seqüência especificada. O método recupera um número inteiro negativo se o caractere ou uma subseqüência não for encontrada na seqüência de caracteres especificada.Ao procurar um caractere especificado usando CompareInfo.IndexOf, o aplicativo deve levar em conta que o método sobrecargas que aceitam uma CompareOptions parâmetro executar a comparação de forma diferente de sobrecargas de método que não aceitam esse parâmetro. Sobrecargas de método que procurar um tipo de caractere e não terão um CompareOptions parâmetro execute uma Pesquisar sensíveis à cultura. Isso se um valor Unicode representa um caractere pré-composto, tal sistema autônomo a Ligadura "Æ" (\u00C6), ele pode ser considerado equivalente a qualquer ocorrência de seus componentes na sequência correta, sistema autônomo "criptografia AE" (\u0041\u0045), dependendo da cultura.Para executar uma Pesquisar (diferenciação de cultura) ordinal para o qual um tipo de caractere é considerado equivalente em outro tipo de caractere somente se os valores Unicode são os mesmos, o aplicativo deve usar um do CompareInfo.IndexOf sobrecargas que têm um CompareOptions parâmetro e conjunto o parâmetro para o valor ordinal.

Os aplicativos também podem usar sobrecargas do IndexOf() método que procurar um caractere realizar uma Pesquisar ordinal (diferenciação de cultura). Observe que os métodos sobrecarregados desse método que procurar uma seqüência de caracteres executar uma Pesquisar sensíveis à cultura.

O exemplo de código a seguir ilustra a diferença nos resultados recuperados pelo IndexOf método dependendo da cultura. A CultureInfoobjeto é criado para Dinamarquês (Dinamarca) designado "da-DK". Em seguida, sobrecargas do CompareInfo.IndexOfmétodo são usados para procurar o caractere "Æ" em seqüências de caracteres "Æble" e "aeble." Observe que, para a cultura "da-DK", oCompareInfo.IndexOf método que usa um CompareOptions parâmetro conjunto ordinal e o mesmo método que não levará esse parâmetro, recuperar a mesma coisa. O caractere "Æ" só é considerado equivalente a \u00E6 de valor de código Unicode.

Imports System
Imports System.Globalization
Imports System.Threading
Imports Microsoft.VisualBasic

Public Class CompareClass
   Public Shared Sub Main()
      Dim str1 As String = "Æble"
      Dim str2 As String = "aeble"
      Dim find As Char = "Æ"
      
      ' Creates a CultureInfo for Danish in Denmark.
      Dim ci As New CultureInfo("da-DK")
      
      Dim result1 As Integer = ci.CompareInfo.IndexOf(str1, find)
      Dim result2 As Integer = ci.CompareInfo.IndexOf(str2, find)
      Dim result3 As Integer = ci.CompareInfo.IndexOf(str1, find, _ 
         CompareOptions.Ordinal)
      Dim result4 As Integer = ci.CompareInfo.IndexOf(str2, find, _
         CompareOptions.Ordinal)      
      
      Console.WriteLine(ControlChars.Newline + "CultureInfo is set to _
         {0}", ci.DisplayName)
      Console.WriteLine(ControlChars.Newline + "Using _
         CompareInfo.IndexOf(string, char) method" + _
         ControlChars.Newline + " the result of searching for {0} in the _
         string {1} is: {2}", find, str1, result1)
      Console.WriteLine(ControlChars.Newline + "Using _
         CompareInfo.IndexOf(string, char) method" + _
         ControlChars.Newline + " the result of searching for {0} in the _
         string {1} is: {2}", find, str2, result2)
      Console.WriteLine(ControlChars.Newline + "Using _
         CompareInfo.IndexOf(string, char, CompareOptions) method" + _
         ControlChars.Newline + " the result of searching for {0} in the _
         string {1} is: {2}", find, str1, result3)
      Console.WriteLine(ControlChars.Newline + "Using _
         CompareInfo.IndexOf(string, char, CompareOptions) method" + _
         ControlChars.Newline + " the result of searching for {0} in the _
         string {1} is: {2}", find, str2, result4)
   End Sub
End Class
using System;
using System.Globalization;
using System.Threading;

public class CompareClass
{

   public static void Main()
   {
      string str1 = "Æble";
      string str2 = "aeble"; 
      char find = 'Æ';

      // Creates a CultureInfo for Danish in Denmark.
      CultureInfo ci= new CultureInfo("da-DK");

      int result1 = ci.CompareInfo.IndexOf(str1, find);
      int result2 = ci.CompareInfo.IndexOf(str2, find);
      int result3 = ci.CompareInfo.IndexOf(str1, find,   
         CompareOptions.Ordinal);
      int result4 = ci.CompareInfo.IndexOf(str2, find, 
         CompareOptions.Ordinal);

      Console.WriteLine("\nCultureInfo is set to {0} ", ci.DisplayName);
      Console.WriteLine("\nUsing CompareInfo.IndexOf(string, char) 
         method\nthe result of searching for {0} in the string {1} is: 
         {2}", find, str1, result1);
      Console.WriteLine("\nUsing CompareInfo.IndexOf(string, char) 
         method\nthe result of searching for {0} in the string {1} is: 
         {2}", find, str2, result2);
      Console.WriteLine("\nUsing CompareInfo.IndexOf(string, char, 
         CompareOptions) method\nthe result of searching for {0} in the 
         string {1} is: {2}", find, str1, result3);
      Console.WriteLine("\nUsing CompareInfo.IndexOf(string, char, 
         CompareOptions) method\nthe result of searching for {0} in the 
         string {1} is: {2}", find, str2, result4);
   }
}

Este código produz a seguinte saída:

CultureInfo is set to Danish (Denmark) 

Using CompareInfo.IndexOf(string, char) method
the result of searching for Æ in the string Æble is: 0

Using CompareInfo.IndexOf(string, char) method
the result of searching for Æ in the string aeble is: -1

Using CompareInfo.IndexOf(string, char, CompareOptions) method
the result of searching for Æ in the string Æble is: 0

Using CompareInfo.IndexOf(string, char, CompareOptions) method
the result of searching for Æ in the string aeble is: -1

Se seu aplicativo substituirá CultureInfo ci = new CultureInfo ("da-DK") com CultureInfo ci = new CultureInfo ("en-US"), o IndexOf() método com o CompareOptions parâmetro conjunto ordinal e o mesmo método sem este parâmetro recuperar resultados diferentes. A comparação sensíveis à cultura executada pelo IndexOfmétodo avalia o caractere "Æ" sistema autônomo equivalente a "criptografia AE" seus componentes. A comparação ordinal (diferenciação de cultura) realizada pelo IndexOfmétodo não recupera o caractere "Æ" equivalente a "criptografia AE" porque não correspondem aos seus valores Unicode.

Quando você recompilar e executar o código para inglês (Estados Unidos), "en-US", cultura, a seguinte saída é produzida:

The CurrentCulture property is set to English (United States) 

Using CompareInfo.IndexOf(string, char) method
the result of searching for Æ in the string Æble is: 0

Using CompareInfo.IndexOf(string, char) method
the result of searching for Æ in the string aeble is: 0

Using CompareInfo.IndexOf(string, char, CompareOptions) method
the result of searching for Æ in the string Æble is: 0

Using CompareInfo.IndexOf(string, char, CompareOptions) method
the result of searching for Æ in the string aeble is: -1

Strings de classificação

The Array classe fornece um sobrecarregados Sort() método que permite que seu aplicativo classificar matrizes com base na CurrentCulture propriedade. No exemplo a seguir, uma matriz de seqüências de caracteres de três é criada.Primeiro, a CurrentCulturepropriedade é conjunto para inglês (Estados Unidos), "en-US" e o Sort() método é chamado. A ordem de classificar resultante baseia-se em classificar de convenções para a cultura do inglês (E.u.a.).Em seguida, a CurrentCulturepropriedade estiver definida como dinamarquês (Dinamarca) "da-DK" e o Array.Sort método é chamado novamente. Observe como a ordem de classificar resultante difere dos resultados "en-US" porque as convenções de classificar para a cultura "da-DK" são usadas.

Imports System
Imports System.Threading
Imports System.IO
Imports System.Globalization
Imports Microsoft.VisualBasic

Public Class TextToFile   
   Public Shared Sub Main()
      Dim str1 As [String] = "Apple"
      Dim str2 As [String] = "Æble"
      Dim str3 As [String] = "Zebra"
      
      ' Creates and initializes a new Array to store 
      ' these date/time objects.
      Dim stringArray As Array = Array.CreateInstance(GetType([String]), _
         3)
      stringArray.SetValue(str1, 0)
      stringArray.SetValue(str2, 1)
      stringArray.SetValue(str3, 2)
      
      ' Displays the values of the Array.
      Console.WriteLine(ControlChars.Newline + "The Array initially _
         contains the following strings:")
      PrintIndexAndValues(stringArray)
      
      ' Sets the CurrentCulture to "en-US".
      Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
      ' Sorts the values of the Array.
      Array.Sort(stringArray)
      
      ' Displays the values of the Array.
      Console.WriteLine(ControlChars.Newline + "After sorting for the _
         culture ""en-US"":")
      PrintIndexAndValues(stringArray)
      
      ' Sets the CurrentCulture to "da-DK".
      Thread.CurrentThread.CurrentCulture = New CultureInfo("da-DK")
      ' Sort the values of the Array.
      Array.Sort(stringArray)
      
      ' Displays the values of the Array.
      Console.WriteLine(ControlChars.Newline + "After sorting for the _
         culture ""da-DK"":")
      PrintIndexAndValues(stringArray)
   End Sub

   Public Shared Sub PrintIndexAndValues(myArray As Array)
      Dim i As Integer
      For i = myArray.GetLowerBound(0) To myArray.GetUpperBound(0)
         Console.WriteLine(ControlChars.Tab + "[{0}]:" + _
            ControlChars.Tab + "{1}", i, myArray.GetValue(i))
      Next i
   End Sub 
End Class
using System;
using System.Threading;
using System.Globalization;

public class ArraySort 
{
   public static void Main(String[] args) 
   {
      String str1 = "Apple";
      String str2 = "Æble";
      String str3 = "Zebra";

      // Creates and initializes a new Array to store the strings.
      Array stringArray = Array.CreateInstance( typeof(String), 3 );
      stringArray.SetValue(str1, 0 );
      stringArray.SetValue(str2, 1 );
      stringArray.SetValue(str3, 2 );

      // Displays the values of the Array.
      Console.WriteLine( "\nThe Array initially contains the following 
            strings:" );
      PrintIndexAndValues(stringArray);

      // Sets the CurrentCulture to "en-US".
      Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
      // Sort the values of the Array.
      Array.Sort(stringArray);

      // Displays the values of the Array.
      Console.WriteLine( "\nAfter sorting for the culture \"en-US\":" );
      PrintIndexAndValues(stringArray); 

      // Sets the CurrentCulture to "da-DK".
      Thread.CurrentThread.CurrentCulture = new CultureInfo("da-DK");
      // Sort the values of the Array.
      Array.Sort(stringArray);

      // Displays the values of the Array.
      Console.WriteLine( "\nAfter sorting for the culture \"da-DK\":" );
      PrintIndexAndValues(stringArray); 
   }
   public static void PrintIndexAndValues(Array myArray)  
   {
      for ( int i = myArray.GetLowerBound(0); i <= 
            myArray.GetUpperBound(0); i++ )
      Console.WriteLine( "\t[{0}]:\t{1}", i, myArray.GetValue( i ) );
   }
}

Este código produz a seguinte saída:

The Array initially contains the following strings:
   [0]:   Apple
   [1]:   Æble
   [2]:   Zebra

After sorting for the culture "en-US":
   [0]:   Æble
   [1]:   Apple
   [2]:   Zebra

After sorting for the culture "da-DK":
   [0]:   Apple
   [1]:   Zebra
   [2]:   Æble

Usando chaves de classificar

Chaves de classificar são usadas para suporte classifica culturalmente confidenciais.Com base no padrão Unicode, cada caractere em uma seqüência de caracteres tem várias categorias de pesos de classificar, incluindo pesos alfabéticos, maiúsculas e sinais diacrítico.Uma chave de classificar serve sistema autônomo repositório desses pesos para uma seqüência específica.Por exemplo, uma chave de classificar pode conter uma cadeia de pesos alfabéticos, seguida por uma cadeia de pesos de maiúsculas e assim por diante.Para obter informações adicionais na classificar conceitos-chave, consulte o padrão Unicode em www.unicode.org.

No .NET estrutura, a SortKey classe mapeia seqüências de caracteres para suas chaves de classificar e vice-versa. Os aplicativos podem usar o GetSortKey() método para criar uma chave de classificar para uma seqüência de caracteres que você especificar. A chave de classificar resultante para uma sequência de caracteres especificada é uma sequência de bytes que podem ser diferentes dependendo do CurrentCulture e o CompareOptions valor especificado. Por exemplo, se o aplicativo especifica o valor IgnoreCase ao criar uma chave de classificar, uma operação de comparação de cadeia de caracteres de caracteres usando a chave de classificar ignora caso.

Depois de criar uma chave de classificar para uma seqüência de caracteres, o aplicativo pode passá-lo sistema autônomo um parâmetro para métodos fornecidos pelo SortKey classe. The Compare método permite a comparação das chaves de classificar. Como esse método realiza uma comparação byte por byte simples, usá-lo é muito mais rápido do que usando Compare(). Aplicativos que consomem classificar podem melhorar o desempenho gerando e armazenando chaves de classificar para todas as strings que são usadas.Quando uma operação de classificar ou comparação é necessária, o aplicativo pode usar as chaves de classificar em vez das cadeias de caracteres.

O exemplo de código a seguir cria chaves de classificar para duas seqüências de caracteres quando o CurrentCultureé conjunto como "da-DK". Ele compara as duas seqüências de caracteres usando o SortKey.Compare método e exibe os resultados. O método retorna um inteiro negativo se string1 for menor que string2, zero (0) se string1 e string2 forem iguais e um número inteiro positivo se string1 for maior que string2.Em seguida, a CurrentCulturepropriedade estiver definida como "en-US" e chaves de classificar são criadas para as mesmas cadeias de caracteres. As chaves de classificar para as cadeias de caracteres são comparadas e os resultados são exibidos.Observe que os resultados da classificar diferem com base na configuração de CurrentCulture. Embora os resultados do exemplo de código a seguir sejam idênticos aos resultados da comparação essas cadeias de caracteres no Comparação de seqüências exemplo anteriormente neste tópico, usando o SortKey.Compare método é mais rápido do que usar o String.Compare método.

Imports System
Imports System.Threading
Imports System.Globalization
Imports Microsoft.VisualBasic

Public Class SortKeySample
   Public Shared Sub Main()
      Dim str1 As [String] = "Apple"
      Dim str2 As [String] = "Æble"
      
      ' Sets the CurrentCulture to "da-DK".
      Dim dk As New CultureInfo("da-DK")
      Thread.CurrentThread.CurrentCulture = dk
      
      ' Creates a culturally sensitive sort key for str1.
      Dim sc1 As SortKey = dk.CompareInfo.GetSortKey(str1)
      ' Create a culturally sensitive sort key for str2.
      Dim sc2 As SortKey = dk.CompareInfo.GetSortKey(str2)
      
      ' Compares the two sort keys and display the results.
      Dim result1 As Integer = SortKey.Compare(sc1, sc2)
      Console.WriteLine(ControlChars.Newline + "When the CurrentCulture _
         is ""da-DK""," + ControlChars.Newline + " the result of _
         comparing {0} with {1} is: {2}", str1, str2, result1)
      
      ' Sets the CurrentCulture to "en-US".
      Dim enus As New CultureInfo("en-US")
      Thread.CurrentThread.CurrentCulture = enus
      
      ' Creates a culturally sensitive sort key for str1.
      Dim sc3 As SortKey = enus.CompareInfo.GetSortKey(str1)
      ' Create a culturally sensitive sort key for str1.
      Dim sc4 As SortKey = enus.CompareInfo.GetSortKey(str2)
      
      ' Compares the two sort keys and display the results.
      Dim result2 As Integer = SortKey.Compare(sc3, sc4)
      Console.WriteLine(ControlChars.Newline + "When the CurrentCulture _
         is ""en-US""," + ControlChars.Newline + " the result of _
         comparing {0} with {1} is: {2}", str1, str2, result2)
   End Sub
End Class
using System;
using System.Threading;
using System.Globalization;

public class SortKeySample 
{
   public static void Main(String[] args) 
   {
      String str1 = "Apple";
      String str2 = "Æble";

      // Sets the CurrentCulture to "da-DK".
      CultureInfo dk = new CultureInfo("da-DK");
      Thread.CurrentThread.CurrentCulture = dk;

      // Creates a culturally sensitive sort key for str1.
      SortKey sc1 = dk.CompareInfo.GetSortKey(str1);
      // Create a culturally sensitive sort key for str2.
      SortKey sc2 = dk.CompareInfo.GetSortKey(str2);

      // Compares the two sort keys and display the results.
      int result1 = SortKey.Compare(sc1, sc2);
      Console.WriteLine("\nWhen the CurrentCulture is \"da-DK\",\nthe 
            result of comparing {0} with {1} is: {2}", str1, str2, 
            result1);

      // Sets the CurrentCulture to "en-US".
      CultureInfo enus = new CultureInfo("en-US");
      Thread.CurrentThread.CurrentCulture = enus ;

      // Creates a culturally sensitive sort key for str1.
      SortKey sc3 = enus.CompareInfo.GetSortKey(str1);
      // Create a culturally sensitive sort key for str1.
      SortKey sc4 = enus.CompareInfo.GetSortKey(str2);

      // Compares the two sort keys and display the results.
      int result2 = SortKey.Compare(sc3, sc4);
      Console.WriteLine("\nWhen the CurrentCulture is \"en-US\",\nthe 
            result of comparing {0} with {1} is: {2}", str1, str2, 
            result2);
   }
}

Este código produz a seguinte saída:

When the CurrentCulture is "da-DK", 
the result of comparing Apple with Æble is: -1

When the CurrentCulture is "en-US", 
the result of comparing Apple with Æble is: 1

Normalização

Seu aplicativo pode normalizar seqüências de caracteres em maiúsculas ou em minúsculas antes de classificar.Regras para a seqüência de caracteres de classificação e casing são específicos do linguagem.Por exemplo, mesmo em idiomas baseados em scripts latinos, há diferente de composição e regras de classificação.Há apenas alguns idiomas (inclusive o inglês) para o qual a ordem de classificar corresponde à ordem dos pontos de código, por exemplo, [65] vem antes B [66].

Os aplicativos não devem confiar nos pontos de código para realizar a classificação precisas e comparações de seqüência de caracteres.Além disso, o .NET estrutura não impor ou garante um formulário específico de normalização.Você é responsável pelos aplicativos que você desenvolve a execução a normalização apropriada.

Para obter mais informações sobre normalização de seqüência de caracteres, consulte Normalização e classificação.

Consulte também

Conceitos

Diferenciação de cultura operações de string

Normalização e classificação

Outros recursos

Codificação e localização