Programování
Retězce
Řetězce (Strings) jsou základní datový typ v mnoha programovacích jazycích, včetně C, Java, Python a mnoha dalších. Řetězec je v podstatě posloupnost znaků.
Reprezentace řetězce v RAM
V paměti RAM je řetězec reprezentován jako pole znaků. Každý znak v řetězci je uložen na samostatné adrese v paměti. Například řetězec “HELLO” by byl v paměti reprezentován jako pole pěti znaků: ‘H’, ‘E’, ‘L’, ‘L’, ‘O’, každý uložený na samostatné adrese.
Vztah mezi řetězcem a polem
Jak již bylo zmíněno, řetězec je v podstatě pole znaků. To znamená, že operace, které můžete provést na poli, můžete obecně provést i na řetězci. Například můžete přistupovat k jednotlivým znakům řetězce stejně jako k prvkům pole.
Velikost řetězce
V jazyce C# je maximální délka řetězce 2³¹ znaků. To je proto, že String.Length je 32bitové celé číslo.

Nicméně, skutečná velikost řetězce v paměti může být větší, protože každý znak v řetězci je reprezentován jako System.Char, což je 16bitový datový typ. To znamená, že řetězec “HELLO” by zabral v paměti 10 bajtů (5 znaků * 2 bajty/znak).

Pokud chcete zjistit počet bajtů, které řetězec zabírá v paměti, můžete použít metodu System.Text.Encoding.Unicode.GetByteCount(s)
Práce s řetězci
V jazyce C# má třída String mnoho užitečných metod pro manipulaci s řetězci.
Split
Metoda Split rozdělí řetězec na pole řetězců na základě zadaných oddělovačů.
    
string s = "Hello, World!";
string[] words = s.Split(',');
// words[0] je "Hello" a words[1] je " World!"

    
    
Substring
Metoda Substring vrací podřetězec zadaného řetězce.
    
string s = "Hello, World!";
string sub = s.Substring(0, 5);
// sub je "Hello"
    
    
ToLower ToUpper
Metody ToLower a ToUpper převedou všechny znaky řetězce na malá, resp. velká písmena.
    
string s = "Hello, World!";
string lower = s.ToLower();
string upper = s.ToUpper();
// lower je "hello, world!" a upper je "HELLO, WORLD!"
    
    
Replace
Metoda Replace nahradí všechny výskyty zadaného podřetězce jiným podřetězcem.
    
string s = "Hello, World!";
string replaced = s.Replace("World", "C#");
// replaced je "Hello, C#!"
    
    
Trim
Metoda Trim odstraní bílé znaky na začátku a na konci řetězce. Například:
    
string s = " Hello, World! ";
string trimmed = s.Trim();
// trimmed je "Hello, World!"
    
    
PadLeft a PadRight
Metody PadLeft a PadRight doplní řetězec na zadanou délku přidáním zadaných znaků na začátek, resp. na konec řetězce.
    
string s = "Hello";
string padded = s.PadRight(10, '.');
// padded je "Hello....."
    
    
Spojování řetězců
V jazyce C# existují různé způsoby, jak spojit řetězce.
Operátor +
Můžete použít operátor + pro spojení dvou řetězců.
    
string s1 = "Hello";
string s2 = "World";
string s3 = s1 + ", " + s2;  // s3 je "Hello, World"

    
    
Metoda Concat
Metoda String.Concat spojí dva nebo více řetězců do jednoho.
    
string s1 = "Hello";
string s2 = "World";
string s3 = String.Concat(s1, ", ", s2);  // s3 je "Hello, World"

    
    
Metoda Join
Metoda String.Join spojí pole nebo kolekci řetězců do jednoho řetězce, přičemž mezi ně vloží zadaný oddělovač.
    
string[] words = { "Hello", "World" };
string s = String.Join(", ", words);  // s je "Hello, World"

    
    
StringBuilder
Třída StringBuilder je nejefektivnější způsob, jak spojit velké množství řetězců. StringBuilder vytváří modifikovatelný objekt řetězce, který může být efektivně upravován bez vytváření nových řetězců.
    
StringBuilder sb = new StringBuilder();
sb.Append("Hello");
sb.Append(", ");
sb.Append("World");
string s = sb.ToString();  // s je "Hello, World"

    
    
Specialní znaky
Bílé znaky jsou znaky, které nejsou viditelné, ale slouží k formátování textu. Patří sem mezera ( ), tabulátor (\t), nový řádek (\n), návrat vozíku (\r) a další.

Escape sekvence jsou speciální znaky, které se v programovacích jazycích používají k reprezentaci určitých speciálních znaků, které by bylo jinak obtížné napsat.
  • \n - nový řádek
  • \t - tabulátor
  • \\ - zpětné lomítko
  • \' - apostrof
  • \" nebo "" "" - uvozovky
  • \r - návrat vozíku
  • Bonus:
  • \b - zpětné tlačítko
  • \f - nová stránka
  • \v - vertikální tabulátor
  • \0 - nulový znak
V C# můžete použít @ před řetězcem, aby jste vypnuli escape sekvence. To je užitečné, pokud chcete napsat řetězec, který obsahuje mnoho zpětných lomítek, jako jsou cesty k souborům.
V tomto případě @ říká C#, že by měl řetězec path interpretovat doslova, takže \ nejsou považovány za escape sekvence.
    
string path = @"C:\Users\JohnDoe\Documents";
    
    
Interpolace řetězců
V jazyce C# můžete použít interpolaci řetězců pro vložení hodnot proměnných přímo do řetězců. To se dělá pomocí zápisu $"...", kde ... je řetězec s vloženými proměnnými v složených závorkách {}. Například:
    
string name = "John";
string greeting = $"Hello, {name}!";
// greeting je "Hello, John!"

    
    
V tomto případě je hodnota proměnné name vložena přímo do řetězce greeting.

String literal je způsob zápisu řetězce, kde to co napišem tak tam bude, přesně jak string vypada v kodu, tak bude i vypsaný.
POZOR! tohle bylo přidáno nedávno (listopad 8. 2022) do c# a ještě není všude podporovaný a například samotné Microsoft docs nemají na to podporu.
    

var singleLine = """This is a "raw string literal". It can contain characters like \, ' and ".""";

var JSON = """
    '{
        "name":"John", 
        "age":30, 
        "car":null
    }'
        """;

    
    
Více informací: learn.microsoft