Comparar e classificar dados para uma cultura específica

Ordem alfabética e convenções para itens de seqüenciamento variam de culturas. Por exemplo, a ordem de classificação pode ser diferencia maiúsculas de minúsculas ou maiúsculas de minúsculas. Ele pode ser foneticamente com ou na aparência do caractere. Em idiomas do Leste Asiático, classifica é ordenadas por traço e radical de ideogramas. Classifica também pode variar dependendo da ordem fundamental que o idioma e cultura usam para o alfabeto. Por exemplo, o idioma sueco tem "æ" caractere classifica após "Z" no alfabeto. O idioma alemão também tem esse caractere, mas classifica como "ae" após "A" no alfabeto. Um aplicativo pronto 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 idioma e de cultura.

Nota em alguns cenários, o comportamento de cultura não é desejável. Para obter mais informações sobre quando e como realizar operações com diferenciação de cultura, consulte As operações de cadeia de caracteres com diferenciação de cultura.

Comparando Sequências de Caracteres

O CompareInfo classe fornece um conjunto de métodos que você pode usar para realizar comparações de seqüência de caracteres de cultura. O CultureInfo classe tem um CompareInfo propriedade que é uma instância dessa classe. Essa propriedade define como comparar e classificar seqüências de caracteres para uma cultura específica. O String.Compare método usa as informações de CompareInfo propriedade para comparar seqüências de caracteres. O String.Compare método retorna um inteiro negativo se string1 é menor do que string2, o 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 podem ser avaliadas de maneira diferente pela String.Compare método, dependendo da cultura usada para executar a comparação. Primeiro, o CurrentCulture é definida como da-DK para a cultura Dinamarquês (Dinamarca) e as cadeias "Apple" e "æble" são comparados. O idioma dinamarquês trata o caractere "æ" como uma letra individual, classificando-o após "Z" no alfabeto. Portanto, a cadeia "æble" é maior que "Apple" na cultura dinamarquesa. Em seguida, o CurrentCulture é definido como en-US para a cultura do inglês (Estados Unidos) e as cadeias "Apple" e "æble" são comparadas novamente. Desta vez, a cadeia "æble" é determinada como menor que "Apple". O idioma inglês trata o caractere "æ" como um símbolo especial, classificando-o antes da letra "A" no alfabeto.

Imports System.Globalization
Imports System.Threading

Public Class TestClass
   Public Shared Sub Main()
      Dim str1 As String = "Apple"
      Dim str2 As String = "Æble"

      ' Set the current culture to Danish in Denmark.
      Thread.CurrentThread.CurrentCulture = New CultureInfo("da-DK")
      Dim result1 As Integer = [String].Compare(str1, str2)
      Console.WriteLine("When the CurrentCulture is ""da-DK"",")
      Console.WriteLine("the result of comparing_{0} with {1} is: {2}", 
                        str1, str2, result1)

      ' Set the current culture to English in the U.S.
      Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
      Dim result2 As Integer = [String].Compare(str1, str2)
      Console.WriteLine("When the CurrentCulture is""en-US"",")
      Console.WriteLine("the result of comparing {0} with {1} is: {2}", 
                        str1, str2,result2)
   End Sub
End Class
' The example displays the following output:
'    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
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);
   }
}
// The example displays the following output:
//    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 a comparação de seqüências de caracteres, consulte Comparando seqüências de caracteres.

Usando as ordens de classificação alternativo

Algumas culturas oferecem suporte a mais de uma ordem de classificação. Por exemplo, a cultura chinês (PRC) com o nome zh-CN, suporta uma classificação por pronúncia (padrão) e uma classificação por contagem de traços. Quando seu aplicativo cria um CultureInfo de objeto usando um nome de cultura, por exemplo, zh-CN, a ordem de classificação padrão é usado. Para especificar a ordem de classificação alternativa, o aplicativo deve criar um CultureInfo objeto usando o identificador para a ordem de classificação alternativa. Em seguida, o aplicativo deve obter um CompareInfo o objeto de CompareInfo para usar em comparações de seqüência de caracteres. Como alternativa, seu aplicativo pode criar um CompareInfo o objeto diretamente usando oCompareInfo.GetCompareInfo método, especificando o identificador para a ordem de classificação alternativa.

A tabela a seguir lista as culturas que oferecem suporte a ordens de classificação alternativo e os identificadores para o padrão e as ordens de classificação alternativo.

Nome de cultura

Cultura

Identificador e nome de classificação padrão

Identificador e nome de classificação 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 (PRC)

Pronúncia: 0x00000804

Contagem de traçado: 0x00020804

zh-HK

Chinês (RAE de Hong Kong)

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 (RAE de MACAU)

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 classificação de catálogo telefônico: 0x00010407

hu-HU

Húngaro (Hungria)

Padrão: 0x0000040e

Classificação técnica: 0x0001040e

GE Ka

Georgiano (Geórgia)

Tradicional: 0x00000437

Moderno: 0x00010437

Pesquisa de Strings

Seu aplicativo pode usar o sobrecarregado CompareInfo.IndexOf método para recuperar o índice baseado em zero de um caractere ou subseqüência de caracteres dentro de uma seqüência de caracteres especificado. O método recupera um inteiro negativo se o caractere ou subseqüência de caracteres não for encontrada na seqüência especificada. Ao procurar um caractere especificado usando CompareInfo.IndexOf, o aplicativo deve levar em conta o método sobrecargas que aceitam uma CompareOptions parâmetro executar a comparação de maneira diferente da 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 realizar uma pesquisa de cultura. Isso se um valor Unicode representa um caractere pré-composto, como, por exemplo, a Ligadura "æ" (\u00C6). ele pode ser considerado equivalente a qualquer ocorrência de seus componentes na seqüência correta, como, por exemplo, "ae" (\u0041\u0045), dependendo da cultura. Para realizar uma pesquisa (diferenciação de cultura) ordinal para o qual um tipo de caractere é considerado equivalente a outro tipo de caractere somente se os valores Unicode são os mesmos, o aplicativo deve usar um da CompareInfo.IndexOf sobrecargas que o levam um CompareOptions parâmetro e definir o parâmetro para o valor Ordinal.

Os aplicativos também podem usar sobrecargas da String.IndexOf método que procurar por um caractere realizar uma pesquisa ordinal (diferenciação de cultura). Observe que as sobrecargas desse método que procurar uma seqüência executam uma pesquisa de cultura.

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

Imports System.Globalization
Imports System.Threading

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("CultureInfo is set to {0}", 
                        ci.DisplayName)
      Console.WriteLine()
      Console.WriteLine("Using CompareInfo.IndexOf(string, char) method")
      Console.WriteLine("the result of searching for {0} in the string {1} is: {2}", 
                        find, str1, result1)
      Console.WriteLine()
      Console.WriteLine("Using CompareInfo.IndexOf(string, char) method")
      Console.WriteLine("the result of searching for {0} in the string {1} is: {2}", 
                        find, str2, result2)
      Console.WriteLine()
      Console.WriteLine("Using CompareInfo.IndexOf(string, char, CompareOptions) method")
      Console.WriteLine("the result of searching for {0} in the string {1} is: {2}", 
                        find, str1, result3)
      Console.WriteLine()
      Console.WriteLine("Using CompareInfo.IndexOf(string, char, CompareOptions) method")
      Console.WriteLine("the result of searching for {0} in the string {1} is: {2}", 
                        find, str2, result4)
   End Sub
End Class
' The example displays the following output:
'    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
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);
   }
}
// The example displays the following output:
//    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 substitui CultureInfo ci = new CultureInfo ("da-DK") com CultureInfo ci = new CultureInfo ("en-US"), o CompareInfo.IndexOf método com o CompareOptions parâmetro definido como Ordinal e o mesmo método sem este parâmetro recuperar diferentes resultados. A comparação de cultura, realizada pelo CompareInfo.IndexOf método avalia o caractere "æ" como equivalente aos seus componentes "ae". A comparação ordinal (diferenciação de cultura) realizada pelo CompareInfo.IndexOf método não recuperar o caractere "æ" equivalente a "ae" porque seus valores de código Unicode não coincidem.

Quando você recompilar e executar o código para en-US, que representa o inglês (Estados Unidos), 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

Seqüências de caracteres de classificação

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

Imports System.Globalization
Imports System.IO
Imports System.Threading

Public Class TextToFile   
   Public Shared Sub Main()
      ' Creates and initializes a new array to store 
      ' these date/time objects.
      Dim stringArray() As String = { "Apple", "Æble", "Zebra"}

      ' Displays the values of the array.
      Console.WriteLine("The original string array:")
      PrintIndexAndValues(stringArray)

      ' Set the CurrentCulture to "en-US".
      Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
      ' Sort the values of the Array.
      Array.Sort(stringArray)

      ' Display the values of the array.
      Console.WriteLine("After sorting for the ""en-US"" culture:")
      PrintIndexAndValues(stringArray)

      ' Set 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("After sorting for the culture ""da-DK"":")
      PrintIndexAndValues(stringArray)
   End Sub

   Public Shared Sub PrintIndexAndValues(myArray() As String)
      For i As Integer = myArray.GetLowerBound(0) To myArray.GetUpperBound(0)
         Console.WriteLine("[{0}]: {1}", i, myArray(i))
      Next
      Console.WriteLine()
   End Sub 
End Class
' The example displays the following output:
'       The original string array:
'       [0]: Apple
'       [1]: Æble
'       [2]: Zebra
'       
'       After sorting for the "en-US" culture:
'       [0]: Æble
'       [1]: Apple
'       [2]: Zebra
'       
'       After sorting for the culture "da-DK":
'       [0]: Apple
'       [1]: Zebra
'       [2]: Æble
using System;
using System.Globalization;
using System.Threading;

public class ArraySort 
{
   public static void Main(String[] args) 
   {
      // Create and initialize a new array to store the strings.
      string[] stringArray = { "Apple", "Æble", "Zebra"};

      // Display the values of the array.
      Console.WriteLine( "The original string array:");
      PrintIndexAndValues(stringArray);

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

      // Display the values of the array.
      Console.WriteLine("After sorting for the culture \"en-US\":");
      PrintIndexAndValues(stringArray); 

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

      // Display the values of the array.
      Console.WriteLine("After sorting for the culture \"da-DK\":");
      PrintIndexAndValues(stringArray); 
   }
   public static void PrintIndexAndValues(string[] myArray)  
   {
      for (int i = myArray.GetLowerBound(0); i <= 
            myArray.GetUpperBound(0); i++ )
         Console.WriteLine("[{0}]: {1}", i, myArray[i]);
      Console.WriteLine();      
   }
}
// The example displays the following output:
//       The original string array:
//       [0]: Apple
//       [1]: Æble
//       [2]: Zebra
//       
//       After sorting for the "en-US" culture:
//       [0]: Æble
//       [1]: Apple
//       [2]: Zebra
//       
//       After sorting for the culture "da-DK":
//       [0]: Apple
//       [1]: Zebra
//       [2]: Æble

Usando chaves de classificação

Chaves de classificação são usadas para oferecer suporte a classifica culturalmente confidenciais. Com base no padrão Unicode, cada caractere em uma seqüência de caracteres é dada a várias categorias de pesos de classificação, incluindo pesos alfabéticos, maiúsculas e minúsculas e diacríticos. Uma chave de classificação serve como repositório desses pesos para uma determinada seqüência de caracteres. Por exemplo, uma chave de classificação pode conter uma seqüência de caracteres de pesos alfabéticos, seguida por uma cadeia de pesos de maiúsculas e assim por diante. Para obter informações adicionais sobre os conceitos chave de classificação, consulte o padrão Unicode com o Unicode home page.

No.NET Framework, o SortKey classe mapeia seqüências de caracteres para suas chaves de classificação e vice versa. Os aplicativos podem usar o CompareInfo.GetSortKey método para criar uma chave de classificação para uma seqüência de caracteres que você especificar. A chave de classificação resultante para uma seqüência de caracteres especificada é uma seqüê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 classificação, uma operação de comparação de seqüência de caracteres usando a chave de classificação diferencia maiúsculas de minúsculas.

Depois de criar uma chave de classificação para uma seqüência de caracteres, o aplicativo poderá passá-lo como um parâmetro para métodos fornecidos pelo SortKey classe. O SortKey.Compare método permite a comparação das chaves de classificação. Porque esse método executa uma comparação de byte por byte simple, o uso dele é muito mais rápido do que usar String.Compare. Os aplicativos que consomem classificação podem melhorar o desempenho gerando e armazenando chaves de classificação para todas as strings que são usadas. Quando uma operação de classificação ou comparação é necessária, o aplicativo pode usar as chaves de classificação em vez das cadeias de caracteres.

O exemplo de código a seguir cria chaves de classificação para duas seqüências de caracteres quando o CurrentCulture é definida 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, o Thread.CurrentThread.CurrentCulture propriedade estiver definida como en-US e chaves de classificação são criadas da mesma seqüências de caracteres. As chaves de classificação para as seqüências de caracteres são comparadas e os resultados são exibidos. Observe que os resultados da classificação diferem com base na configuração de CurrentCulture. Embora os resultados do exemplo a seguir são idênticos aos resultados da comparação essas cadeias de caracteres de Comparando seqüências de caracteres exemplo anteriormente neste tópico, usando o SortKey.Compare método é mais rápido que usar o String.Compare método.

Imports System.Globalization
Imports System.Threading

Public Class SortKeySample
   Public Shared Sub Main()
      Dim str1 As [String] = "Apple"
      Dim str2 As [String] = "Æble"

      ' Set the CurrentCulture to "da-DK".
      Dim dk As New CultureInfo("da-DK")
      Thread.CurrentThread.CurrentCulture = dk

      ' Create 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)

      ' Compare the two sort keys and display the results.
      Dim result1 As Integer = SortKey.Compare(sc1, sc2)
      Console.WriteLine("When the  current culture is ""da-DK"",")
      Console.WriteLine("the result of comparing {0} with {1} is: {2}", 
                        str1, str2, result1)
      Console.WriteLine()

      ' Set the CurrentCulture to "en-US".
      Dim enus As New CultureInfo("en-US")
      Thread.CurrentThread.CurrentCulture = enus

      ' Create 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)

      ' Compare the two sort keys and display the results.
      Dim result2 As Integer = SortKey.Compare(sc3, sc4)
      Console.WriteLine("When the CurrentCulture is ""en-US"",")
      Console.WriteLine("the result of comparing {0} with {1} is: {2}", 
                        str1, str2, result2)
   End Sub
End Class
' The example displays the following output:
'       When the  current culture 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
using System;
using System.Threading;
using System.Globalization;

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

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

      // Create 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);

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

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

      // Create 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);

      // Compare the two sort keys and display the results.
      int result2 = SortKey.Compare(sc3, sc4);
      Console.WriteLine("When the CurrentCulture is \"en-US\",");
      Console.WriteLine("the result of comparing {0} with {1} is: {2}", 
                        str1, str2, result2);
   }
}
// The example displays the following output:
//       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 para maiúsculas ou minúsculas antes de classificar. Regras para a seqüência de caracteres classificando e casing são específicos do idioma. Por exemplo, mesmo em idiomas latinos baseada em script, há diferente composição e regras de classificação. Existem apenas alguns idiomas (incluindo o inglês) que a ordem de classificação coincide com a ordem dos pontos de código, por exemplo, [65] vem antes B [66].

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

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

Consulte também

Conceitos

Operações de cadeia de caracteres com diferenciação de cultura

Normalização e classificação

Outros recursos

Codificação e localização