Share via


Porovnání řetězců bez rozlišení jazykové verze

Ve výchozím nastavení metoda String.Compare provádí porovnání s rozlišováním velkých a malých písmen v jazykové verzi. Tato metoda také obsahuje několik přetížení, které poskytují culture parametr, který umožňuje zadat jazykovou verzi, která se má použít, a comparisonType parametr, který umožňuje zadat pravidla porovnání, která se mají použít. Volání těchto metod namísto výchozího přetížení odstraní jakoukoli nejednoznačnost týkající se pravidel používaných při volání konkrétní metody a objasňuje, zda je konkrétní porovnání závislé na jazykové verzi či nikoli.

Poznámka:

Obě přetížení String.CompareTo metody provádějí porovnání s rozlišováním jazykové verze a rozlišování velkých a malých písmen. Tuto metodu nelze použít k porovnání bez rozlišování jazykové verze. Pro srozumitelnost kódu doporučujeme místo toho použít metodu String.Compare .

Pro operace citlivé na jazykovou verzi zadejte hodnotu výčtu StringComparison.CurrentCultureStringComparison.CurrentCultureIgnoreCasecomparisonType jako parametr. Chcete-li provést porovnání citlivé na jazykovou verzi pomocí určené jazykové verze jiné než aktuální jazykové verze, zadejte CultureInfo objekt, který představuje tuto jazykovou verzi jako culture parametr.

Porovnání řetězců nerozlišující jazykovou verzi podporovaná String.Compare metodou jsou buď lingvistická (na základě konvencí řazení invariantní jazykové verze), nebo nejazyčná (na základě pořadové hodnoty znaků v řetězci). Většina porovnání řetězců nezávislých na jazykové verzi je nejazykových. Pro tato porovnání zadejte hodnotu výčtu StringComparison.OrdinalStringComparison.OrdinalIgnoreCasecomparisonType jako parametr. Pokud je například bezpečnostní rozhodnutí (jako je porovnání uživatelského jména a hesla) založeno na výsledku porovnání řetězců, operace by měla být nezávislá na jazykové verzi a jazyce, aby výsledek nemohl být ovlivněn konvencemi konkrétní jazykové verze nebo jazyka.

Pokud chcete zpracovávat jazykově odpovídající řetězce z několika jazykových verzí konzistentním způsobem, použijte porovnání lingvistických řetězců nezávislé na jazykové verzi. Jestliže vaše aplikace zobrazuje například slova, která používají více znakových sad v seznamu, budete pravděpodobně chtít zobrazit slova ve stejném pořadí bez ohledu na aktuální jazykovou verzi. Pro jazykové porovnání bez rozlišení jazyka definuje .NET neutrální jazykovou verzi, která je založená na lingvistických konvencích angličtiny. Chcete-li provést jazykové porovnání bez rozlišení jazykové verze, zadejte StringComparison.InvariantCulture nebo StringComparison.InvariantCultureIgnoreCase jako comparisonType parametr.

Následující příklad provádí dvě nejazyková porovnání řetězců nezávislá na jazykové verzi. V prvním porovnání se rozlišují velká a malá písmena, ve druhém nikoli.

using System;

public class CompareSample
{
    public static void Main()
    {
        string string1 = "file";
        string string2 = "FILE";
        int compareResult = 0;

        compareResult = String.Compare(string1, string2,
                                       StringComparison.Ordinal);
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}",
                          StringComparison.Ordinal, string1, string2,
                          compareResult);

        compareResult = String.Compare(string1, string2,
                                       StringComparison.OrdinalIgnoreCase);
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}",
                          StringComparison.OrdinalIgnoreCase, string1, string2,
                          compareResult);
    }
}
// The example displays the following output:
//    Ordinal comparison of 'file' and 'FILE': 32
//    OrdinalIgnoreCase comparison of 'file' and 'FILE': 0
Public Class CompareSample
    Public Shared Sub Main()
        Dim string1 As String = "file"
        Dim string2 As String = "FILE"
        Dim compareResult As Integer

        compareResult = String.Compare(string1, string2, _
                                       StringComparison.Ordinal)
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}",
                          StringComparison.Ordinal, string1, string2,
                          compareResult)

        compareResult = String.Compare(string1, string2,
                                       StringComparison.OrdinalIgnoreCase)
        Console.WriteLine("{0} comparison of '{1}' and '{2}': {3}",
                          StringComparison.OrdinalIgnoreCase, string1, string2,
                          compareResult)
    End Sub
End Class
' The example displays the following output:
'    Ordinal comparison of 'file' and 'FILE': 32
'    OrdinalIgnoreCase comparison of 'file' and 'FILE': 0

Můžete si stáhnout tabulky hmotnosti řazení, sadu textových souborů, které obsahují informace o váhách znaků používaných při řazení a porovnání operací pro operační systémy Windows, a tabulku výchozích prvků kolace Unicode, tabulku tloušťky řazení pro Linux a macOS.

Viz také