Sdílet prostřednictvím


Porovnání a řazení dat pro konkrétní jazykovou verzi

Abecední pořadí a konvence pro řazení položek se v různých jazykových verzích liší. Pořadí řazení například může, ale nemusí rozlišovat malá a velká písmena. Může být založené na fonetice nebo vzhledu znaku. Ve východoasijských jazycích jsou pořadí řazena podle počtu tahů a radikálu ideografických znaků. Řazení se také může lišit v závislosti na základním pořadí, které jazyk a jazyková verze používají pro abecedu. Švédský jazyk má například znak "Æ", který se v abecedě řadí za "Z". Německý jazyk má tento znak také, ale v abecedě jej řadí jako "ae", tedy za "A". Aplikace připravená pro použití na celém světě musí být schopna porovnávat a řadit data na základě jazykové verze, aby podporovala konvence řazení pro konkrétní jazykovou verzi a konkrétní jazyk.

Poznámka:   V některých scénářích není závislost na jazykové verzi žádoucí. Další informace o tom, kdy a jak provádět operace nezohledňující jazykovou verzi, naleznete v tématu Operace s řetězci nezohledňující jazykovou verzi.

Porovnávání řetězců

Třída CompareInfo poskytuje sadu metod, které lze použít k provádění porovnávání řetězců zohledňující jazykovou verzi. Třída CultureInfo má vlastnost CompareInfo, která je instancí této třídy. Tato vlastnost určuje, jak porovnat a řadit řetězce pro konkrétní jazykovou verzi. Metoda String.Compare používá informace ve vlastnosti CompareInfo k porovnávání řetězců. Metoda String.Compare vrátí negativné celé číslo, pokud je hodnota string1 menší než string2, nulu pokud jsou hodnoty string1 a string2 rovny, a kladné celé číslo, pokud je hodnota string1 větší než string2.

Následující příklad kódu ukazuje, jak mohou být dva řetězce vyhodnoceny metodou String.Compare odlišně v závislosti na jazykové verzi použité k provedení porovnání. Nejprve je vlastnost CurrentCulture nastavena na da-DK pro jazykovou verzi Dánština (Dánsko) a jsou porovnány řetězce "Apple" a "Æble". V dánštině je znak "Æ" považován za jedno písmeno a abecedně je řazen za "Z". Proto je pro dánskou jazykovou verzi řetězec "Æble" větší než "Apple". Dále je vlastnost CurrentCulture nastavena na en-US pro jazykovou verzi angličtina (Spojené státy) a znovu jsou porovnány řetězce "Apple" a "Æble". Tentokrát je řetězec "Æble" stanoven jako menší než "Apple". V anglickém jazyce je znak "Æ" považován jako speciální symbol, a proto je v abecedě řazen před písmenem "A".

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

Další informace o porovnávání řetězců naleznete v tématu Porovnávání řetězců.

Použití alternativních pořadí řazení

Některé jazykové verze podporují více pořadí řazení. Například jazyková verze Čínština (ČLR), s názvem zh-CN, podporuje řazení podle výslovnosti (výchozí) a řazení podle počtu tahů. Když aplikace vytvoří instanci objektu CultureInfo pomocí názvu jazykové verze, například zh-CN, je použito výchozí pořadí řazení. Pro určení alternativního pořadí řazení by aplikace musela vytvořit objekt CultureInfo pomocí identifikátoru pro alternativní pořadí řazení. Aplikace poté může získat objekt CompareInfo z vlastnosti CompareInfo pro použití při porovnávání řetězců. Aplikace může také vytvořit objekt CompareInfo přímo metodouCompareInfo.GetCompareInfo zadání identifikátoru pro alternativní pořadí řazení.

V následující tabulce jsou uvedeny jazykové verze podporující alternativní pořadí řazení a identifikátory pro výchozí a alternativní pořadí řazení.

Název jazykové verze

Jazyková verze

Výchozí název řazení a identifikátor

Alternativní název řazení a identifikátor

es-ES

Španělština (Španělsko)

Mezinárodní: 0x00000C0A

Tradiční: 0x0000040A

zh-TW

čínština (Tchaj-wan),

Počet tahů: 0x00000404

Ču-jin: 0x00030404

zh-CN

čínština (ČLR),

Výslovnost: 0x00000804

Počet tahů: 0x00020804

zh-HK

Arabština (Libye)

Počet tahů: 0x00000c04

Počet tahů: 0x00020c04

zh-SG

Čínština (Singapur)

Výslovnost: 0x00001004

Počet tahů: 0x00021004

zh-MO

Čínština (Macao SAR)

Výslovnost: 0x00001404

Počet tahů: 0x00021404

ja-JP

Japonština (Japonsko)

Výchozí hodnota: 0x00000411

Unicode: 0x00010411

ko-KR

Korejština (Korea)

Výchozí hodnota: 0x00000412

Korejské Xwansung - Unicode: 0x00010412

de-DE

Němčina (Německo)

Slovník: 0x00000407

Řazení dle telefonního seznamu DIN: 0x00010407

hu-HU

Maďarština (Maďarsko)

Výchozí hodnota: 0x0000040e

Technické řazení: 0x0001040e

ka-GE

Gruzínština (Gruzie)

Tradiční: 0x00000437

Moderní řazení: 0x00010437

Hledání řetězců

Aplikace může použít přetíženou metodu CompareInfo.IndexOf k získání indexu (začínající od nuly) znaku nebo podřetězce v rámci zadaného řetězce. V případě, že znak nebo podřetězec nebyl v určeném řetězci nalezen, vrátí metoda záporné celé číslo. Při hledání daného znaku pomocí CompareInfo.IndexOf by aplikace měla vzít v úvahu, že přetížené metody, které přijímají parametr CompareOptions, provádějí srovnání odlišně od přetížených metod, který tento parametr nepřijímají. Přetížené metody, které hledají znak a nepřijímají parametr CompareOptions provádějí vyhledávání zohledňující jazykovou verzi. Pokud hodnota sady Unicode představuje složený znak, například ligaturu "Æ" (\u00C6), může být v závislosti na jazykové verzi považován za shodný s jakýmkoli výskytem jeho součástí ve správném pořadí, jako například "AE" (\u0041\u0045). Pro vyhledávání dle pořadového čísla znaku (nezávisle na jazykové verzi), pro které je znak považován za rovný jinému znaku pouze pokud jsou stejné hodnoty Unicode, by aplikace měla použít některé z přetížení metody CompareInfo.IndexOf, které přebírá parametr CompareOptions a nastavit parametr na hodnotu Ordinal.

Aplikace může také použít přetížení metody String.IndexOf, která hledá znak, pro vyhledávání dle pořadového čísla znaku (nezávisle na jazykové verzi). Všimněte si, že přetížení této metody, které vyhledává řetězec, provádí vyhledávání zohledňující jazykovou verzi.

Následující příklad kódu ukazuje rozdíly výsledků získaných pomocí metody IndexOf v závislosti na jazykové verzi. Objekt CultureInfo je vytvořen pro da-DK, tedy pro jazykovou verzi Dánština (Dánsko). Dále jsou použita přetížení metody CompareInfo.IndexOf k vyhledávání znaku "Æ" v řetězcích "Æble" a "aeble". Všimněte si, že pro da-DK metoda CompareInfo.IndexOf, která přijímá parametr CompareOptions nastavený na Ordinal a stejná metoda, která tento parametr nevyužívá, vracejí totéž. Znak "Æ" je považován za shodný pouze s hodnotou kódu Unicode \u00E6.

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

Pokud je v aplikaci nahrazeno CultureInfo ci = new CultureInfo ("da-DK") za CultureInfo ci = new CultureInfo ("en-US"), pak metoda CompareInfo.IndexOf s parametrem CompareOptions nastaveným na Ordinal a stejná metoda bez tohoto parametru vrátí různé výsledky. Porovnání zohledňující jazykovou verzi, prováděné metodou CompareInfo.IndexOf, vyhodnocuje znak "Æ" jako ekvivalentní jeho součástem "ae". Porovnání dle pořadového čísla znaku (nezávislé na jazykové verzi), prováděné metodou CompareInfo.IndexOf, nepovažuje znaky "Æ" a "ae" za shodné, protože se neshodují jejich hodnoty kódu Unicode.

Po novém zkompilování a spuštění pak kód pro en-US, představující jazykovou verzi Angličtina (Spojené státy), vyprodukuje následující výstup:

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

Řazení řetězců

Třída Array poskytuje přetíženou metodu Array.Sort, která umožňuje aplikacím řadit pole na základě vlastnosti CurrentCulture. V následujícím příkladu je vytvořeno pole tří řetězců. Nejprve je vlastnost Thread.CurrentThread.CurrentCulture nastavena na en-US a je zavolána metoda Array.Sort. Výsledné pořadí řazení je založeno na konvencích řazení pro jazykovou verzi Angličtina (Spojené státy). Dále je vlastnost Thread.CurrentThread.CurrentCulture nastavena na da-DK a metoda Array.Sort je zavolána znovu. Všimněte si, že výsledné pořadí se liší od výsledků pro en-US, protože jsou použity konvence řazení pro da-DK.

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

Použití klíčů řazení

Klíče řazení slouží pro podporu řazení zohledňující jazykovou verzi. Na základě standardu Unicode je každému znaku řetězce přiřazeno několik kategorií vah řazení, zahrnující váhu abecední a váhy založené na velikosti písmen a diakritice. Klíč řazení slouží jako úložiště těchto vah pro určitý řetězec. Klíč řazení může například obsahovat řetězec abecedních vah, následovaný řetězcem vah založených na velikosti písmen, a tak dále. Další informace o konceptech klíče řazení naleznete ve standardu Unicode na domovské stránce konsorcia Unicode.

V rozhraní .NET Framework mapuje třída SortKey řetězce na jejich klíče řazení a naopak. Aplikace mohou použít metodu CompareInfo.GetSortKey k vytvoření klíče řazení pro řetězec, který zadáte. Výsledný klíč řazení pro zadaný řetězec představuje sekvenci bajtů, která se může lišit v závislosti na CurrentCulture a na zadané hodnotě CompareOptions. Pokud například aplikace při vytváření klíče řazení zadá hodnotu IgnoreCase, pak operace porovnání řetězců pomocí klíče řazení bude ignorovat velikost písmen.

Po vytvoření klíče řazení pro řetězec může aplikace klíč předat jako parametr metodám poskytovaným třídou SortKey. Metoda SortKey.Compare umožňuje porovnání klíčů řazení. Protože tato metoda provádí jednoduché porovnání bajt po bajtu, její použití je mnohem rychlejší než použití String.Compare. Aplikace, které často provádějí řazení mohou zvýšit svůj výkon vygenerováním a uložením klíčů řazení pro všechny řetězce, které se používají. Když je poté vyžadována operace řazení nebo porovnání, může aplikace používat klíče řazení namísto řetězců.

Následující příklad kódu vytvoří klíče řazení pro dva řetězce při nastavení CurrentCulture na da-DK. Porovná dva řetězce pomocí metody SortKey.Compare a zobrazí výsledky. Metoda vrací záporné celé číslo, pokud je řetězec1 menší než řetězec2, nulu (0) pokud jsou řetězec1 a řetězec2 shodné a kladné celé číslo pokud je řetězec1 větší než řetězec2. Následně je vlastnost Thread.CurrentThread.CurrentCulture nastavena na hodnotu en-US a jsou vytvořeny klíče řazení pro stejné řetězce. Klíče řazení pro řetězce jsou porovnány a jsou zobrazeny výsledky. Povšimněte si, že se výsledky řazení liší v závislost na nastavení CurrentCulture. Ačkoli jsou výsledky v následujícím příkladu kódu shodné s výsledky porovnávání těchto řetězců v příkladu Porovnávání řetězců dříve v tomto tématu, je použití metody SortKey.Compare rychlejší než použití metody String.Compare.

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

Normalizace

Aplikace může před řazením normalizovat řetězce na velká nebo malá písmena. Pravidla pro řazení řetězců a velikost písmen jsou závislá na konkrétním jazyce. Například i v rámci jazyků používajících latinku existují různá pravidla skládání a řazení. Existuje pouze několik jazyků (včetně angličtiny), u kterých odpovídá pořadí řazení pořadí bodů kódu, například A [65] se nachází před B [66].

Aplikace by neměla spoléhat na body kódu k provedení přesného řazení a porovnání řetězců. Kromě toho rozhraní .NET Framework nevynucuje ani nezaručuje specifický druh normalizace. Zodpovídáte za provádění vhodné normalizace v aplikacích, které vyvinete.

Další informace o normalizaci řetězců naleznete v tématu Normalizace a řazení.

Viz také

Koncepty

Operace s řetězci nezávislé na jazykové verzi

Normalizace a řazení

Další zdroje

Kódování a lokalizace