Programování: Práce s řetězci v C#/.NET
tato otázka se nezabývá kódováním, můžeme ho proto při výkladu vynechat
- standardně jsou všechny řetězce v .NET ukládány jako Unicode
- základní datový typ pro řetězce v C# je System.String, většinou vytvářený pomocí klíčového slova string (s malým „s“)
- je vždy uložen na heapu (haldě; podobně jako jiné základní typy, např. int)
- při manipulaci s řetězcem (např. při přidání jednoho znaku) je vždy nutné vytvořit nový řetězec a starý smazat => není proto vhodný pro časté změny
- s řetězcem můžeme pracovat s přetíženými operátory (=,+=,+)
- String má zabudovaný indexer, který vrací daný znak na pozici i (jako char): mujretezec[i]
- důležité metody:
- Compare() a CompareOriginal() porovnávají řetězce (první zmíněná podle místního a jazykového nastavení), použití přes statickou třídu String nebo přes přetížený operátor (==,!=)
- IndexOf() pro hledání podřetězce, vrací pozici prvního znaku z prvního nelezeného podřetězce
- Replace() sloužící pro nahrazování znaků a podřetězců
- Remove() pro odstranění zadaného počtu znaků od zadané pozice
- Split() sloužící k rozdělení řetězců podle zvoleného oddělovače (např. „;“)
- Substring() extrahující podřetězec od zadané pozice
- ToCharArray() která vrátí pole charů
- vlastnost Length (readonly), která vrací počet znaků v řetězci
- pro rychlejší manipulaci s řetězcem se požívá třída StringBuilder
- při vytváření instance objektu můžeme specifikovat, kolik znaků v paměti chceme pro řetězec rezervovat, můžeme tím předejít zbytečnému kopírování, pokud by se změněný řetězec nevešel do rezervovaného bloku paměti
- třída má podobné metody jako String, pro skládání řetězců se však používá metoda Append()
- další důležitou metodou je ToString(), který vrátí daný řetězec přetypovaný na System.String
- jednou z možností reprezentace řetězce je použití charového pole
- pro pokročilou práci s řetězci, zejména pro hledání, se používají regulární výrazy
- potřebné třídy najdeme ve jmenném prostoru System.Text.RegularExpressions
- základní třídy: Regex, Match
Kreslení řetezců v GDI+
- základní metoda pro kreslení řetězců třídy Graphics je DrawString()
- spousta přetížení
- základní DrawString(„řetězec“, Font, Brushes.Black, x, y)
- Font je vlastnost formuláře, můžeme si však naistancovat vlastní písmo:
- new Font(FontFamily.GenericSansSerif, Font.Size)
- Brush je abstraktní typ, pokud si chci naistancovat vlastní štětec, musím použít nějaký zdědený typ, např. SolidBrush
- volitelně lze přidat ještě parametr StringFormat, kterým můžeme dále specifikovat formátování řetězce
- např. chceme zobrazit text vertikálně:
- new StringFormat(StringFormatFlags.DirectionVertical | tady lze přidat další flagy)
- standardní systémový font má velikost 13!
- řádkování se dá řešit několika způsoby
- pomocí změření velikosti jednoho řádku metodou Graphics.MeasureString()
- lepší varianta je však použití Font.GetHeight(Graphics)
- výhodou je, že nám bude řádkování fungovat i při používání různých transformací