Řetězce
Deklarace proměnné typu řetězec. Důležité metody pro práci s řetězci v jazyce C#.
- Jakým způsobem lze pracovat s jednotlivými znaky řetězce?
- Jakým způsobem lze spočítat počet slov v řetězci? Napište kód programu pro tuto úlohu.
- Jak převedete číslo na řetězec a naopak?
Jak pracovat se znaky v řetězci
Se znaky v řetězci lze pracovat stejně jako v Polích (koneckonců řetězec je pole znaků). Řetězec je totiž brán jako pole znaků. Příklad:
string slovo = "ahoj";Console.WriteLine(slovo[1]);Vypíše písmeno h
Metody
Řetězce mají několik metod pro práci s nimi. My opět nemusíme umět všechny.
"text".ToUpper()vrátí text velkými písmeny"text".ToLower()vrátí text malými písmeny"Hello World".Split(' ')vrátí pole["Hello", "World"]"text".Lengthvypíše celkovou délku řetězce, v tomto případě 4string.Join("! ", new int[] {1, 2, 3})Spojí prvky z pole a vytvoří řetězec1! 2! 3. Separující znak!můžeme změnit, nepřidává se za poslední člen*"text".IndexOf('x')vrátí první pozici začínající nulou, na které se hledaný řetězec v rodičovském řetězci vyskytuje, v tomto případě 2. Vrátí -1 pokud není nalezen
Jak spočítat slova
Počet slov v řetězci lze spočítat pomocí metody Split(). Rozdělíme si ho podle mezer, a poté nám stačí zjistit délku vytvořeného pole. Příklad:
string veta = "Ahoj, jak se máš?";string[] slova = veta.Split(' ');Console.WriteLine(slova.Length);Vypíše číslo 4
Převádění mezi typy
S převáděním mezi řetězcem a číslem je to trochu složitější. Mohlo by se nám totiž stát, že se systém pokusí nastavit číselnou proměnnou na nějaký text
- Číslo -> řetězec je obvykle bez problémů, použijeme
42.ToString() - Řetězec -> číslo už ale musíme dávat pozor, jestli to je možné. Existuje několik funkcí:
int cislo = int.Parse("2a")vyhodí chybu pokud převod není možný, jinak převede a uloží. Je možné chybu detekovat a provést dané akce přes blok try..catch Dá se použít i pro další typy jako double, …TryParse()- viz. Datové typy#TryParse()
Spojení řetězců
- Pokud chceme dva řetězce spojit, tak buď můžeme klasicky přes = (“Hello” + “World”), nebo také přes +=, tak pak lze již k existujícímu na jedné řádce přidat text (zprava += “Měj se!“)
- V C# a mnoha dalších programovacích jazycích funguje také tzv. řetězcová interpolace. To umožňuje jednodušší a čitelnější zápis. Do složených závorek napíšeme proměnnou, případně nějakou metodu, a její výsledek se vloží do výsledného řetězce. Příklad:
string verze = "2.0"Console.WriteLine($"Vítej! Tento program je verze {verze}")
Formátování řetězců
Existuje metoda String.format(), ta také umožňuje interpolaci, ale hlavně formátování řetězce. Zde je uvedena spíše pro zajímavost, zapamatovat si je peklo
- Řetězec při interpolaci nezačíná znakem $ a proměnné se nepíšou do závorek - do těch se píšou čísla začínající od nuly, a proměnné se tedy píšou jako argumenty za řetězec -
String.format("Jmenuji se {0} a je mi {1} let", jmeno, vek) - Do závorky lze připsat typ, podle kterého se daná data zformátují (jako v excelu) - lze zde použít například B/b (binární), C/c (měna) nebo f pro lokalizovaný čas se jménem dne a měsíce. Dá se také použít na zobrazení určitého počtu číslic pomocí vlastních konfigurací - například pokud do konfigurace
{0:000.00}vložíme 23.4, dostaneme 023.40, To proto, že první nulou před dvojtečkou přečteme 23.4, poté určíme že číslo má mít 3 číslice před a 2 číslice za desetinnou tečkou. - Dají se dělat jednoduché tabulky - pokud v závorce použijeme čárku, uděláme text delší tak, aby dosahoval potřebné délky, kladná čísla dělají mezery nalevo, záporná čísla napravo -
"{0,-5}a", 1vypíše1 a. V tabulce tedy použijeme nejdelší hodnotu + nějakou konstantu - Je to tedy velmi mocná metoda, ve které se mohou výše zmíněné příklady kombinovat. Proto je nejlepší si při práci s ní najít na internetu dokumentaci