Třída CompareInfo
Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.
Konvence pro porovnávání a řazení dat se liší od jazykové verze po jazykovou verzi. Pořadí řazení může být například založeno na fonetice nebo na vizuální reprezentaci znaků. Ve východoasijských jazycích jsou znaky řazeny podle úhozů a radikálu ideografických znaků. Řazení závisí také na pořadí, které jazyky a jazykové verze používají pro abecedu. Dánský jazyk má například znak „Æ“, který se abecedně řadí za znak „Z“. Kromě toho se porovnání můžou rozlišovat malá a velká písmena nebo nerozlišují malá a velká písmena a pravidla velikosti písmen se také můžou lišit podle jazykové verze. Třída CompareInfo zodpovídá za udržování dat porovnání řetězců citlivých na jazykovou verzi a za provádění operací řetězců citlivých na jazykovou verzi.
Obvykle nemusíte vytvořit CompareInfo instanci objektu přímo, protože jeden je implicitně používán všemi neřadiálními operacemi porovnání řetězců, včetně volání metody String.Compare . Pokud ale chcete načíst CompareInfo objekt, můžete to udělat jedním z těchto způsobů:
Načtením hodnoty CultureInfo.CompareInfo vlastnosti pro konkrétní jazykovou verzi.
Voláním statické GetCompareInfo metody s názvem jazykové verze. To umožňuje pozdní přístup k objektu CompareInfo .
Ignorované hodnoty hledání
Znakové sady obsahují ignorovatelné znaky, což jsou znaky, které nejsou zahrnuty do jazykového porovnání nebo porovnání závislém na jazykové verzi. Metody porovnání, jako IndexOf jsou a LastIndexOf nebere v úvahu takové znaky při provádění porovnání citlivé na jazykovou verzi. Ignorovatelné znaky zahrnují:
String.Empty. Metody porovnání citlivé na jazykovou verzi vždy najdou prázdný řetězec na začátku (index nula) prohledávaného řetězce.
Znak nebo řetězec skládající se z znaků s body kódu, které nejsou v operaci považovány z důvodu možností porovnání, zejména a CompareOptions.IgnoreSymbols možnosti vytvářejí vyhledávání, CompareOptions.IgnoreNonSpace ve kterých jsou symboly a mezery kombinování znaků ignorovány.
Řetězec s body kódu, které nemají žádný lingvistický význam. Například v porovnání řetězců citlivých na jazykovou verzi se vždy ignoruje měkký spojovník (U+00AD).
Bezpečnostní aspekty
Pokud rozhodnutí o zabezpečení závisí na porovnání řetězců nebo změně případu, měli byste použít InvariantCulture vlastnost k zajištění konzistentního chování bez ohledu na nastavení jazykové verze operačního systému.
Poznámka:
Pokud je to možné, měli byste použít metody porovnání řetězců, které mají parametr typu CompareOptions k určení druhu očekávaného porovnání. Obecně platí, že pro porovnávání řetězců zobrazených v uživatelském rozhraní použijte jazykové možnosti (pomocí aktuální jazykové verze) a zadejte Ordinal nebo OrdinalIgnoreCase pro porovnání zabezpečení.