Vytváření objektu CultureInfo

Jan Holan       30. 1. 2013             5702 zobrazení

Někdy v .NET potřebujeme formátovat nebo naopak parsovat řetězec ve specifické kultuře, k tomu potřebujeme získat objekt CultureInfo této konkrétní kultury. Možností jak vytvořit objekt CultureInfo je více, proto si ukážeme rozdíly mezi nimi.

Předpokládejme následující jednoduchý příklad. Ve Windows si u české kultury změníme znak oddělovače desetinné části u čísel, provedeme to v Control Panel v dialogu Region and Language (nebo Region na Windows 8) volbou Additional settings pro českou kulturu. Změníme položku Decimal symbol například na znak |.

CustomizeFormat

A spustíme tento jednoduchý C# kód:

var culture = System.Globalization.CultureInfo.CreateSpecificCulture("cs-CZ");
System.Diagnostics.Debug.WriteLine(culture.NumberFormat.NumberDecimalSeparator);

culture = System.Globalization.CultureInfo.GetCultureInfo("cs-CZ");
System.Diagnostics.Debug.WriteLine(culture.NumberFormat.NumberDecimalSeparator);

culture = new System.Globalization.CultureInfo("cs-CZ");
System.Diagnostics.Debug.WriteLine(culture.NumberFormat.NumberDecimalSeparator);

culture = new System.Globalization.CultureInfo("cs-CZ", false);
System.Diagnostics.Debug.WriteLine(culture.NumberFormat.NumberDecimalSeparator);

Výstup je následující:

|
,
|
,

Z výsledků je patrné, že v případě metody CreateSpecificCulture (*) získáme kulturu změněnou podle aktuálního uživatelského nastavení ve Windows. V případě metody GetCultureInfo naopak dostaneme výchozí nastavení kultury (tj. původní znak desetinné čárky ‘,’). V případě použití konstruktoru můžeme toto chování ovlivnit parametrem useUserOverride, pozor ale, že výchozí je hodnota true.

Pokud tedy potřebujete v kódu získat specifickou kulturu, např. pro parsování hodnot při importu souboru, jehož formát je pevně daný, musíme použít GetCultureInfo nebo uvést useUserOverride false, aby kód nebyl závislí na změnách v nastavení kultury ve Windows.


(*) Metoda CreateSpecificCulture také na rozdíl od ostatních způsobů vrací vždy specifickou kulturu i při volání pouze s názvem neutrální kultury (například “cs”).

 

hodnocení článku

0       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback