Klíčové slovo string je synonymem bázové třídy System.String
. Tato třída není jedinou třídou pro práci s řetězci. Např. System.Text
a System.Text.RegularExpressions
. Při opakované úpravě řetězce je třída System.String
velmi neefektivní. Je lepší pro takový případ použít System.Text.StringBuilder
. Formátování textu při volání Console.WriteLine()
lze ovlivňovat implementací rozhraní IFormatProvider
a IFormattable
. Pro vyhledávání a úpravu řetězců lze využít regulárních výrazů za pomocí System.Text.RegularExpressions
.
Třída pro ukládání řetězců, obsahuje mnoho řetězcových operací. Díky přetíženému operátoru „+“ lze řetězce spojovat. Lze za pomocí indexeru extrahovat znaky z řetězce.
Některé metody třídy System.String:
Compare()
- porovná znak po znaku obsah řetězců, zohledňuje místní jazykové nastavení;CompareOriginal()
- totéž co Compare() ale nezohledňuje místní jazyková nastavení;Format()
- formátuje řetězec;IndexOf()
- najde první výskyt podřetězce nebo znaku v řetězci;IndexOfAny()
- najde první výskyt libovolné množiny znaků v řetězci;LastIndexOf()
- najde poslední výskyt podřetězce nebo znaku v řetězci;LastIndexOfAny()
- najde poslední výskyt libovolné množiny znaků v řetězci;PadLeft()
- Doplní zleva řetězec opakováním daného znaku;PadRight()
- Doplní zprava řetězec opakováním daného znaku;Replace()
- nahradí výskyty daného řetězce zadaným řetězcem nebo znakem;Split()
- rozdělí řetězec na podřetězce, zlomení dojde v místech nalezení zadaného znaku;Substring()
- vrátí podřetězec požínající zadanou pozicí v řetězci;ToLower()
- převede řetězec na malá písmena;ToUpper()
- převede řetězec na velká písmena;Trim()
- odstraní ze začátku a konce řetězce mezery.
Řetězec ve třídě String
je neměnný. Metody manipulující s řetězcem vytvářejí vždy novou instanci. Aby nedocházelo k problémům s paměťovou náročností při úpravě řetězců, máme k dispozici třídu System.Text.StringBuilder
. Třída není tak výkonná jako System.String
, ale její použití při konkatenaci, náhradě, atd. řetězců je mnohem efektivnější.
System.String je odkazovým typem. Lze jej však porovnat operátorem ==, neboť je přetížený.
má vlastnosti Length
(aktuální délka řetězce) a Capacity
(objem rezervované paměti). Konstruktor očekává řetězec, kapacitu, nebo řetězec a kapacitu. Zde se při úpravě řetězce nevytváří nová instance, ale upravuje se obsah stávající. Nová paměť bude rezervována tehdy, když po vykonané operaci řetězec přesahuje kapacitu.
Některé metody třídy System.Text.StringBuilder
:
Append()
- připojí řetězec;Insert()
- vloží řetězec;Remove()
- odstraní znaky z řetězce;Replace()
- nahradí výskyty znaku nebo podřetězce jiným znakem nebo podřetězcem;ToString()
- Vrací obsah řetězce přetypovaný naSystem.String
.
jsou řetězce, které jsou doplněny o další informace říkající, jak má výsledný řetězec nakonec vypadat. Používá se zejména u specifických formátů příslušejících různým místním nastavením. Například formát data a podobně. Do složených závorek se uvádí číselné hodnoty, které určují jak má být zobrazovaná informace formátována, resp. kolik znaků bude k zobrazení informace potřeba. První číslo však vždy uvádí, který z následujících argumentů bude použit při formátování. Například Console.Writeln(„a = {0,10:E}; b = {1};”, a, b);
Kladné číslo zarovnává doprava, záporné číslo doleva. Za dvojtečkou je uveden typ zobrazované informace, viz tabulka několika typů:
C – číselný typ – lokální formát měny ($435,25)
D – celočíselný typ – obecný formát
E – číselný typ – vědecký formát s exponentem (4,85300E+003)
F – číselný typ – pro pevnou desetinnou čárku (458,235)
G – číselný typ – obecný formát (458,235)
N – číselný typ – odděluje tisíce na základě národního nastavení
P – číselný typ – formát procent
X – Pouze celočíselný typ – hexadecimální formát
Metoda Console.Writeln
předá argumenty metodě String.Format()
. Ten rozloží řetězec na několik částí a předá jej ke zpracování několika metodám.
Metoda AppendFormat musí vědět jakým způsobem má objekt formátovat. Zjistí, zda daný objekt implementuje rozhraní System.IFormattable
. Pokud ne, zavolá metodu ToString()
. Pokud ano zavolá dvouargumentovou metodu ToString (viz rozhrani System.IFormattable)
. Použití metody Writeln
s jedním argumentem vytiskne řetězec bez formátování.
Rozhraní System.IFormattable
předpokládá definici dvouargumentové metody ToString(string format, IFormatProvider formatProvider);
Prvním argumentem je řetězec určující požadovaný formát a druhým argumentem je odkaz na objekt implementující rozhraní IFormatProvider
. Toto rozhraní poskytuje další informace, jak formátovat řetězec.
Slouží pro práci s řetězci. Na základě zadaného vzoru lze v řetězci vyhledat (a třeba následně upravit) podřetězce. Regulární výrazy v jazyce C# jsou navrženy podle Perl 5 s dalšími rozšířeními. Operace s regulárními výrazy poskytuje třída System.Text.RegularExpressions
. Pro použití se vytvoří instance třídy System.Text.RegularExpressions.Regex
, nebo se zavolá statická metoda RegEx
, které se předá v parametru řetězec a regulární výraz. Následuje příklad použití regulárního výrazu k vyhledání textu.
string text = "hello world"; string pattern = "o"; MatchCollection Matches(text, pattern, RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture); foreach (Match NextMatch in Matches) { Console.WriteLine(NextMatch.Index); } |
Několik metaznaků, které může regulární výraz obsahovat:
^ - počátek vstupního textu;
$ - konec vstupního textu;
. – jakýkoliv znak kromě konce řádku;
* - libovolný počet výskytů znaku uvedeného před hvězdičkou;
+ - jeden nebo více výskytů znaku uvedeného před plus;
? – 0 nebo 1 výskyt znaku uvedeného před hvězdičkou;
\s – bílý znak;
\S – vše kromě bílého znaku;
\b – hranice slova;
\B – jakákoli pozice, která není hranicí slova;
kulaté závorky – ohraničují skupiny znaků (metazaků).