Megosztás a következőn keresztül:


Kultúraérzékeny sztring-összehasonlítások végrehajtása

Alapértelmezés szerint a metódus kulturális String.Compare szempontból érzékeny és kis- és nagybetűkre érzékeny összehasonlításokat végez. Ez a módszer több túlterhelést is tartalmaz, amelyek olyan paramétert culture biztosítanak, amely lehetővé teszi a használni kívánt kultúra megadását, valamint egy comparisonType paramétert, amely lehetővé teszi a használni kívánt összehasonlító szabályok megadását. Ha ezeket a metódusokat az alapértelmezett túlterhelés helyett hívjuk meg, azzal megszűnik az adott metódushívásban használt szabályokkal kapcsolatos kétértelműség, és egyértelművé teszi, hogy egy adott összehasonlítás kulturális szempontból érzékeny vagy kulturális érzéketlen.

Feljegyzés

A metódus mindkét túlterhelése String.CompareTo kulturális szempontból érzékeny és kis- és nagybetűkre érzékeny összehasonlításokat végez. Ezzel a módszerrel nem végezhet kultúraérzékeny összehasonlításokat. A kód egyértelműsége érdekében javasoljuk, hogy inkább a metódust String.Compare használja.

Kultúraérzékeny műveletek esetén adja meg paraméterként a StringComparison.CurrentCulture számbavételi vagy StringComparison.CurrentCultureIgnoreCase enumerálási comparisonType értéket. Ha az aktuális kultúrától eltérő kijelölt kultúrával szeretne kultúraérzékeny összehasonlítást végezni, adja meg azt az CultureInfo objektumot, amely az adott kultúrát jelöli paraméterként culture .

A módszer által String.Compare támogatott kulturális érzéketlen sztring-összehasonlítások vagy nyelviek (az invariáns kultúra rendezési konvenciók alapján) vagy nem nyelviek (a sztringben szereplő karakterek sorszámértékén alapulnak). A legtöbb kulturális érzéketlen sztring-összehasonlítás nem nyelvi. Ezekhez az összehasonlításokhoz adja meg paraméterként a StringComparison.Ordinal számbavételi vagy StringComparison.OrdinalIgnoreCase enumerálási comparisonType értéket. Ha például egy biztonsági döntés (például felhasználónév vagy jelszó összehasonlítása) egy sztring-összehasonlítás eredményén alapul, a műveletnek kulturális érzéketlennek és nem nyelvinek kell lennie annak biztosítása érdekében, hogy az eredményt ne befolyásolják egy adott kultúra vagy nyelv konvenciók.

Ha több kultúrából származó nyelvileg releváns sztringeket szeretne egységesen kezelni, használjon kulturális szempontból érzéketlen nyelvi sztring-összehasonlítást. Ha például az alkalmazás több karakterkészletet használó szavakat jelenít meg egy listamezőben, akkor a jelenlegi kultúrától függetlenül érdemes lehet a szavakat ugyanabban a sorrendben megjeleníteni. A kulturális érzéketlen nyelvi összehasonlítások esetében a .NET egy invariáns kultúrát határoz meg, amely az angol nyelvi konvenciókon alapul. Kulturális érzéketlen nyelvi összehasonlítás végrehajtásához adja meg vagy StringComparison.InvariantCultureIgnoreCase adja meg StringComparison.InvariantCulture a comparisonType paramétert.

Az alábbi példa két kulturális érzéketlen, nem nyelvi sztring-összehasonlítást végez. Az első a kis- és nagybetűk megkülönböztetése, a második viszont nem.

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

Letöltheti a Rendezési súlytáblákat, a Windows operációs rendszerek rendezési és összehasonlítási műveleteihez használt karaktervastagságokra vonatkozó információkat tartalmazó szövegfájlokat, valamint az Alapértelmezett Unicode rendezési elem táblázatot, a Linux és macOS rendszerhez készült rendezési súlytáblát.

Lásd még