Łańcuchy, czyli napisy

Łańcuchy zawierają sekwencję znaków
„Witaj Świecie”

Typ string

string tekst = "Witaj Świecie"

Łańcuch jest typem referencyjnym (jest aliasem klasy System.String)

char [] litery= { 'H', 'e', 'l', 'l','o' };
string tekst = new string(litery);

Tablice łańcuchów

string [] tekst = {"Ala", "ma", "kota"};

„Dodawanie” łańcuchów (konkatenacja) to łączenie napisów

string tekst = "Witaj";
tekst = tekst + " Świecie";
tekst += " Hura!";

Uwaga: wynikiem operacji jest nowy łańcuch.

Znaki łańcucha dostępne za pomocą operatora [index]
Pierwszy element ma indeks 0 (to jest tablica znaków)

string tekst = "kod";
tekst[2] = 't';

Zobacz: String

Metody i własności Opis Przykład
Chars[] indeksowane elementy łańcucha tekst[0]
Length długość łańcucha tekst.Length
Equals() czy napisy takie same? tekst.Equals(„Hello”)
Compare() kolejność alfabetyczna (-1, 0 , 1) tekst.Compare(„Hello”)
Contains() czy zawiera łańcuch? tekst.Contains(„kot”)
StartsWith(), EndsWith() czy zaczyna się/kończy się od? tekst.StartsWith(„Ala”)
IndexOf() indeks początku pasującego wzorca tekst.IndexOf(„Ala”)
PadLeft(), PadRight() uzupełnia napis spacjami do zadanej długości tekst.PadLeft(25)
Remove() usuwa ciąg znaków od zadanej pozycji tekst.Remove(2,5)
Substring() wyodrębnia ciąg znaków od zadanej pozycji tekst.Substring(2,5)
Replace() zamienia fragment łańcucha tekst.Replace(„Ala”, „Ewa”)
ToLower(), ToUpper() zamienia litery na małe/wielkie tekst.ToUpper()
Trim(), TrimEnd(), TrimStart() usuwa znaki (spacje) z łańcucha tekst.TrimEnd()
Split() dzieli łańcuch względem separatora tekst.Split(' ')
Join() łaczy tablicę napisów

Napisz program, który wczytuje kolejne linie tekstu z konsoli aż do napotkania pustej linii.

Każda kolejna linia tekstu wypisywana jest w odwrotnej kolejności a wszystki małe litery zamieniane są na wielkie.

Przykład:

Ala ma kota
ATOK AM ALA

Napisz program, który wczytuje kolejne linie tekstu z konsoli aż do napotkania pustej linii.

Po zakończeniu wczytywania tekstu program wypisuje wszystkie wyrazy podanego tekstu w porządku alfabetycznym. Zakładamy, że wyrazy oddzielone są spacjami.

Przykład:

Ala ma kota.

Ala
kota.
ma
  • używanie łączenia łańcuchów może byc nieefektywne, bo za kazdym razem wynikiem jest kopia łancucha
  • do budowania dłuższych napisów lepiej użyć System.StringBuilder()
StringBuilder sb = new StringBuilder();
 
// Dodaj łańcuch na końcu 
sb.Append("Witaj");
 
// Dodaj linię na końcu 
sb.AppendLine("Świecie !");
 
// Dodaj formatowany napis 
sb.AppendFormat("PI = {0:F5}", Math.PI);
 
// Ile znaków ?
Console.WriteLine("sb.Length={0}", sb.Length);
 
// Uzyskaj gotowy łańcuch
string tekst = sb.ToString();
 
Console.WriteLine(tekst);

Napisz program, który porówna szybkość wykonywania operacji łączenia tekstu pomiędzy operatorem dodawania (+) i klasą StringBuilder().

W tym celu zbuduj napis składającyc się w wielu powtórzeń (np. 10 tysiecy) napisu „Witaj Świecie” i wyznacz czas wykoanania algorytmu dla obu porównywanych metod. Do wyznaczenia casu wykonania programu można wykorzystać własność ''System.DateTime.Now, która zwraca aktualny czas z dokładnością do milisekund. Ta wartość może zostać wywołana do pomiaru czasu przed i po wykonaniu algorytmu. Przedział czasu między dwoma pomiarami czasu jest strukturą typu typu TimeSpan. Struktura ta udostepnia własność TimeSpan.TotalMilliseconds zwracającą całkowitą liczbę milisekund pomiedzy pomiarami czasu.