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]


Výřez ASCII tabulka – rozsah znaků 0 ÷127

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