Hodnotové typy
2. Hodnotové typy
2.4. Znaky
Pro práci se znaky lze v C# použít datový typ char. Proměnná typu char zabírá 2 Byte (tj. 16 bitů), nebo používá šestnáctibitové kódování UNICODE (proto také zvládne nejen angličtinu, jiné jazyky, ale i český jazyk). Znakové konstanty (konstanty datového typu char) můžeme v programu zapsat několika způsoby:
- Běžné znaky uzavřeme mezi apostrofy, např. 'a', 'Ž' (na rozložení české klávesnice zapíšete apostrof kombinací kláves Alt+039)
- Řídící znaky, jako je přechod na nový řádek, tabulátor apod., můžeme vyjádřit některou z řídících posloupností uzavřených mezi apostrofy např. '\t' (anglicky „Escape Sequence“) – viz Tabulka 1
- Můžeme také použít řídící posloupnost ve tvaru \xhhhh, kde hhhh jsou nejvýše 4 šestnáctkové číslice (z hexadecimální soustavy) vyjadřující kód daného znaku. Tak lze vyjádřit libovolný znak, např. zápis '\x41' představuje znak 'A' – viz Obrázek 1.
|
Znak |
UNICODE |
Význam |
|
\n |
\u000A |
Přechod na nový řádek |
|
\r |
\u000D |
Návrat na počátek řádku |
|
\t |
\u0009 |
Tabulátor |
|
\b |
\u0008 |
Návrat o jeden znak |
|
\f |
\u000C |
Nová stránka |
|
\v |
\u000B |
Vertikální tabulátor |
|
\a |
\u0007 |
Zvukový signál |
|
\” |
\u0022 |
Uvozovky |
|
\\ |
\u005C |
Obrácené lomítko, znak \ |
|
\‘ |
\u002C |
Apostrof |
|
\0 |
\u0000 |
Znak s kódem 0 |
Tabulka 1: Řídící posloupnosti v C# [3]
![]()
Obrázek
1: Výřez ASCII tabulka –
rozsah znaků 0 ÷127 [4]
Následující tabulka obsahuje kódy UNICODE se znaky českých a slovenských znaků např. 'Á' získáme v kódu zápisem '\x00C1' – viz Tabulka 2. Pro zobrazení znaků můžeme také využít zápis '\uhhhh', kde hhhh jsou přesně 4 šestnáctkové číslice vyjadřující kód znaku v tabulce UNICODE.
|
znak |
dec |
hex |
znak |
dec |
hex |
|
Á |
193 |
U+00C1 |
á |
225 |
U+00E1 |
|
Č |
268 |
U+010C |
č |
269 |
U+010D |
|
Ď |
270 |
U+010E |
ď |
271 |
U+010F |
|
É |
201 |
U+00C9 |
é |
233 |
U+00E9 |
|
Ě |
282 |
U+011A |
ě |
283 |
U+011B |
|
Í |
205 |
U+00CD |
í |
237 |
U+00ED |
|
Ň |
327 |
U+0147 |
ň |
328 |
U+0148 |
|
Ó |
211 |
U+00D3 |
ó |
243 |
U+00F3 |
|
Ř |
344 |
U+0158 |
ř |
345 |
U+0159 |
|
Š |
352 |
U+0160 |
š |
353 |
U+0161 |
|
Ť |
356 |
U+0164 |
ť |
357 |
U+0165 |
|
Ú |
218 |
U+00DA |
ú |
250 |
U+00FA |
|
Ů |
366 |
U+016E |
ů |
367 |
U+016F |
|
Ý |
221 |
U+00DD |
ý |
253 |
U+00FD |
|
Ž |
381 |
U+017D |
ž |
382 |
U+017E |
Tabulka 2: České znaky UNICODE [11]
V C# můžeme využívat dva druhy řetězcových literálů:
- Běžné (anglicky „Regular“) – skládá se z posloupností znakových konstant zapsaných buď přímo, nebo pomocí řídících posloupností (znaky z tabulky řídících posloupností – viz Tabulka 1 - musíme vyjádřit pomocí řídících posloupností)
- Doslovné (anglicky „Verbatim String Literals“) – může obsahovat jakýkoliv zobrazitelný znak kromě uvozovek a k tomu přechod na nový řádek a tabulátor. Řídící posloupnosti se v něm ignorují. [3]
Ve výpisu lze použít tzv. modifikátor pomocí znaku @, který ignoruje řídící posloupnosti a vypisuje text (uzavřený v uvozovkách), jak byly zapsány v textovém řetězci.
Ilustrativní příklad Znaky
Program Znaky
- Popis: Příklad výpisu textu pomocí řídící posloupnosti a modifikátoru
- Zadání: V hlavní metodě Main vypište text "Výpis znaku: " a za ním se byl vypsán znak 'Á' pomocí řídící posloupnosti. Na nové řádky v konzolové aplikaci vypište text
"Ignorace: '\x00C1'
text na novém řádku
zase text na novém řádku"
kde ve zdrojovém kódu použijete modifikátor @ pro ignoraci řídící posloupnosti, která by namísto '\x00C1' vypsala v textu znak 'Á' - Řešení: Bude postupně probráno v následujícím textu
V následujícím kódu vyžadujeme, aby se na prvním řádku vypsal požadovaný text včetně připojení (pomocí operátoru +) znaku vypsaného pomocí řídící posloupnosti. Na dalším řádku kódu jsme specifikovali že @, představující tzv. modifikátor, ignoruje řídící posloupnosti a vypisuje text (uzavřený v uvozovkách), jak jsme jej zapsali v kódu (nepoužili jsme WriteLine, ale jen Write, tudíž nedojde k přechodu na nový řádek) – viz Kód 1.
static void Main(string[] args) { //Výpis znaku 'Á' Console.WriteLine("Výpis znaku: " + '\x00C1'); //Ignorace řídící posloupnosti Console.Write("Ignorace: " + @"'\x00C1' text na novém řádku zase text na novém řádku"); }
Kód 1: Příklad využití řídící posloupnosti a modifikátoru
Výsledný výpis v konzoli vidíme v následujícím výstupu – viz Výstup programu - Kód 1.
Výpis znaku: Á
Ignorace: '\x00C1'
text na novém řádku
zase text na novém řádku
Výstup programu - Kód 1: Ukázka
výpisu znaků a textu