Operacje na tekstach. Część 1
Typ string. Klasa String
Zakres operacji na tekstach dotyczy danych typu string. Nazwa typu string (z małej litery) to odniesienie dla klasy String (pisanej z dużej litery).
Słowo kluczowe string (pisane z małej litery) używa się do deklaracji zmiennej. Słowo kluczowe String (pisane z dużej litery) jest nazwą klasy. Słowa tego używa się do wywołania statycznych metod istniejących w tej klasie.
Podczas deklaracji zmiennej typu string nie trzeba deklarować jaki będzie maksymalny rozmiar łańcucha znaków przypisanych do takiej zmiennej. Taki łańcuch przypomina jednowymiarową tablicę znaków a klasa String zawiera szereg metod ułatwiających pracę z łańcuchami znaków.
Typ string jako tablica znaków
Przygotuj formatkę z komponentem TextBox (2 sztuki), Button, Label. TextBox ustaw do pracy w trybie Multiline= True. Dodaj belkę przewijania w pionie (ScrollBars= Vertical). Kontrolce Label przypisz tekst: Pokaz znak z pozycji: Kontrolce Button przypisz tekst Zad. 1
Zad. 1
Napisz funkcję o dwóch parametrach. Pierwszy parametr typy string, drugi typu int. Funkcja ma zwracać znak z podanego łańcucha znaków (parametr pierwszy) z indeksu wskazanego przez drugi parametr. W zdarzeniu klawisza Button wywołaj tę funkcję, której wynik działania wyślesz do okna dialogowego.
Proponowany kod funkcji, która zwraca typ char
Wskazówka:
char Znak_z_Indeksu(string tekst,int id)
{
return tekst[id];
}
Inny sposób, funkcja zwraca typ string
Wskazówka:
string Znak_z_Indeksu2(string tekst, int id)
{
return tekst[id].ToString();
}
Wywołanie tej funkcji w zdarzeniu Click() kontrolki Button
Wskazówka:
private void button1_Click(object sender, EventArgs e)
{
int id = (int)Convert.ToInt32(textBox2.Text);
MessageBox.Show("Na pozycji " + id + " jest znak: "
+ Znak_z_Indeksu(textBox1.Text, id),
"Komunikat",
MessageBoxButtons.OK,
MessageBoxIcon.Information);
}
Zad.1 w rozwiązaniu pod konsolę
Powyższe zadanie w rozwiązaniu pod konsolę przedstawia poniższa ilustracja
Postać kodu nieznacznie się różni. W rozwiązaniu uwzględniłem pętlę menu aby w jednej aplikacji zawrzeć kilka zadań.
Kod funkcji zwracającej znak z podanej pozycji
Wskazówka:
static char Znak_z_Indeksu(string tekst,int id)
{
return tekst[id];
}
Kod funkcji realizującej zadanie 1
Wskazówka:
static void Zadanie1()
{
Console.WriteLine("Wprowadź dowolny tekst:\n");
string tekst = Console.ReadLine();
Console.WriteLine("Podaj indeks znaku:\n");
int id = int.Parse(Console.ReadLine());
Console.WriteLine("Na pozycji " + id +
" jest znak " +
Znak_z_Indeksu(tekst, id));
}
Kod funkcji Main
Wskazówka:
static void Main(string[] args)
{
Console.WriteLine("Witaj w CzD!");
Console.WriteLine("Wybierz zadanie");
Console.WriteLine("1- znak z pozycji\n"+
"2- tekst od tył\n"+
"Esc- koniec");
ConsoleKeyInfo klawiszInfo;
do
{
klawiszInfo = Console.ReadKey();
switch (klawiszInfo.KeyChar)
{
case '1':Zadanie1();break;
}
} while (klawiszInfo.Key != ConsoleKey.Escape);
}
Zad. 2
Napisz jednoargumentową funkcję zwracająca typ łańcuchowy string. Argumentem funkcji jest typ string- ciąg znaków wprowadzonych z klawiatury. Funkcja ma wyświetlić na ekranie podany tekst w odwrotnej kolejności.
Proponowany kod funkcji
Wskazówka:
string OdwrocTekst(string tekst)
{
string wynik = null;
for(int i =tekst.Length-1;i>=0; i--)
{
wynik+=tekst[i];
}
return wynik;
}
Funkcję wywołaj w zdarzeniu Click() drugiej kontrolki typu Button, tak aby w kontrolce TextBox pojawiła się nowa linia z odwróconym tekstem.
Wskazówka:
private void button2_Click(object sender, EventArgs e)
{
textBox1.AppendText(Environment.NewLine+
OdwrocTekst(textBox1.Text));
}
Zad. 2 Rozwiązanie pod konsolę
Poniższa ilustracja przedstawia wynik działania programu
Kod funkcji odwracającej znaki tekstu
Wskazówka:
static string OdwrocTekst(string tekst)
{
string wynik = null;
for (int i = tekst.Length - 1; i >= 0; i--)
{
wynik += tekst[i];
}
return wynik;
}
Funkcję wywołujemy w drugiej funkcji, odpowiedzialnej za przygotowanie informacji dla użytkownika
Wskazówka:
static void Zadanie2()
{
Console.WriteLine("\nWprowadź dowolny tekst:\n");
string tekst = Console.ReadLine();
Console.WriteLine("Tekst w odwrotnej kolejności:\n");
Console.WriteLine(OdwrocTekst(tekst)+"\n");
}
Pętla klawiszologii zmieni się na poniższą
Wskazówka:
static void Main(string[] args)
{
Console.WriteLine("Witaj w CzD!");
Console.WriteLine("Wybierz zadanie");
Console.WriteLine("1- znak z pozycji\n"+
"2- tekst od tył\n"+
"Esc- koniec");
ConsoleKeyInfo klawiszInfo;
do
{
klawiszInfo = Console.ReadKey();
switch (klawiszInfo.KeyChar)
{
case '1': Zadanie1();break;
case '2': Zadanie2(); break;
}
} while (klawiszInfo.Key != ConsoleKey.Escape);
}
Zadania do samodzielnego wykonania
Zad. 3
Napisz funkcję, która podany łańcuch znaków w argumencie wyświetli pojedynczo w nowym wierszu. Rozwiązanie podaj jako aplikacja desktopowa i konsolowa.
Widok na rozwiązanie konsolowe
Zad. 4
Napisz funkcję, która w podanym łańcuchu znaków jako argument zliczy krotność występowania zadanego znaku. Rozwiązanie podaj jako aplikacja desktopowa i konsolowa.
Widok na rozwiązanie konsolowe