× Aktuálně z oboru

Vychází Game Ready ovladače pro Far Cry 5 [ clanek/2018040603-vychazi-game-ready-ovladace-pro-far-cry-5/ ]
Celá zprávička [ clanek/2018040603-vychazi-game-ready-ovladace-pro-far-cry-5/ ]

Formátovanie reťazcov v C#

[ http://programujte.com/profil/2422-tomas-bosak/ ]Google [ ?rel=author ]       [ http://programujte.com/profil/20356-petra-pakostova/ ]Google [ ?rel=author ]       17. 8. 2006       16 085×

Rôzne možnosti zobrazenia textu, čísel, dátumu alebo meny v jazyku C#.

Polia znakov a čísel, čiže reťazce, majú v C# rôzny druh zápisu a dajú sa ľahko formátovať podľa vlastných potrieb. Často sa pri vývoji môžeme stretnúť s problémom, napr. vypísať niekoľkomiestnu číselnú hodnotu tak, aby bola rozdelená po troch cifrách (10000000 -> 10 000 000). Riešenie tohto problému, ale aj mnohých iných sa bude nachádzať v tomto článku.

Metódy ako napr. Console.WriteLine [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemconsoleclasswritelinetopic1.asp ] alebo String.Format [ http://msdn2.microsoft.com/en-us/library/system.string.format.aspx ] slúžiace na výpis a formátovanie reťazcov poskytujú užitočné vlastnosti. Pri uvedení jednoduchého príkladu

int chlapci = 15;
int dievcata= 20;
Console.WriteLine("Pocet chlapcov: {0} Pocet dievcat: {1}", chlapci, dievcata);
je vidno, že hodnoty premenných sú vypísané na mieste zložených zátvoriek s indexom, ktorý určuje poradové číslo premennej. To isté umožňuje metóda String.Format, ktorú v nasledujúcom kóde použijeme pri výpise reťazca do SubItemu v ListView (obrázky pod zdrojovými kódomi majú len informatívny charakter)

int ucet = 60000;
item.SubItems.Add(String.Format("{0}", ucet));


Tu nastáva menší problém s formátom vypísanej hodnoty, ktorá je na prvý pohľad zle čitateľná. Lepšie by bolo, ak by táto hodnota bola rozdelená po troch cifrách čím by sa zlepšil vzhľad aj čitateľnosť

int ucet = 60000;
item.SubItems.Add(String.Format("{0:n0}", ucet));


Tým že sa v zložených zátvorkách za indexom premennej pridal špecifikátor ":n0" sme určili formát výpisu hodnoty premennej v ListView a výsledok je prijateľnejši ako v prvom prípade. Pri spätnej konverzii z upraveného formátu (60 000) na pôvodný sled čísel (60000) je hodnota oddelená na tisícky braná ako string, nie ako číslo. Preto sa táto hodnota premieňa späť na číslo pomocou metódy Parse [ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemInt32ClassParseTopic3.asp ].

String myString = "60 000";
Console.WriteLine(myString);

int x = int.Parse(myString, System.Globalization.NumberStyles.AllowThousands);
Console.WriteLine(x);
Samozrejme C# obsahuje celú sadu rôznych formátov zobrazenia. Niektoré z nich sú uvedené nižšie v tabuľkách.

Špecifikátor Popis Formát Vstup Výstup
c mena (peniaze) {0:c} 500 500,00 SK
d Celé číslo {0:d} 500 500
e Vedecké číslo {0:e} 500 5,000000e+002
f Pevná rádová bodka {0:f} 500 500,00
g Všeobecný formát {0:g} 500 500
n Číslo s medzerami (alebo čiarkami) po tisícoch {0:n} 50000 50 000,00
r Round trippable {0:r} 3,14 3,14
x Hexadecimálna hodnota {0:x4} 500 1F4

C# taktiež podporuje vytváranie vlastných formátovaní.

Špecifikátor Popis Formát Vstup Výstup
0 Vyplňuje nulami {0:00.0000} 3,14 03,1400
# Uzatvorí číslo {0:(#).##} 3,14 (3),14
. Desatinná bodka so zaokrúhlením {0:0.0} 3,14 3,1
, Oddeľovač tisíciek {0:0,0} 50000 50 000
,. Zmena veľkosti čísla {0:0,.} 50000 50
% Percento {0:0%} 3,14 314%
e Exponent {0:00e+0} 3,14 31e-1

Uvedené tabuľky neobsahujú všetky podporované formátovacie znaky a možnosti. Doplňujúce informácie:

Zložené formátovanie [ http://msdn2.microsoft.com/en-us/library/txafckwd.aspx ]
Štandardné formátovanie čísel [ http://msdn2.microsoft.com/en-us/library/dwhawy9k.aspx ]
Vlastné formátovanie čísel [ http://msdn2.microsoft.com/en-us/library/0c899ak8.aspx ]
Štandardné formátovanie dátumu a času [ http://msdn2.microsoft.com/en-us/library/az4se3k1.aspx ]
Vlastné formátovanie dátumu a času [ http://msdn2.microsoft.com/en-us/library/8kb3ddd4.aspx ]

Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2006072902-formatovanie-retazcov-v-c/ ].