Pozycja znaku w łańcuchu znaków. Visual Studio C#
Łańcuch znaków w języku C# jest reprezentowany przez typ string. Kolejne znaki tak przechowywane, mają tak zwany indeks odpowiadający pozycji znaku w danym łańcuchu. Typ string (konkretnie klasa String) ma kilka zaimplementowanych metod, na przykład zmianę wystąpień podciągu znaków Replace, usunięcie ilości znaków począwszy od zadanej pozycji - Remove i wiele innych. Nie ma zaimplementowanej metody podmiany pojedynczego znaku z podanej pozycji.
Cel :Napisz funkcję, która pokaż znak z zadanej pozycji oraz funkcję, która podmieni znak z wybranej pozycji w zadanym łańcuchu znaków.
Krok 1. Układ komponentów
- GroupBox- sztuk 1
- TextBox- sztuk 3
- Label- sztuk 3
- Button- sztuk 2
Proponowane ułożenie komponentów przedstawia poniższa ilustracja
Krok 2. Funkcja pokazująca znak z zadanej pozycji
Funkcja będzie o dwóch argumentach. Pierwszy, to tekst źródłowy, drugi, to zadana pozycja. Funkcja będzie zwracać typ znakowy char. Proponowany kod funkcji:
char pokazZnak_z_Pozycji(string tekst,int id)
{
char z =(char)0;//przypisz znak pusty
z = tekst[id];//odczytaj znak z pozycji id
return z;
}
Krok 3. Odczytujemy znak z zadanej pozycji
Wywołanie powyższej funkcji przeprowadzimy w zdarzeniu Click przycisku button1
private void button1_Click(object sender, EventArgs e)
{
int i = Convert.ToInt16(textBox2.Text);
label3.Text = pokazZnak_z_Pozycji(textBox1.Text, i).ToString();
}
Skompiluj program i sprawdź efekt działania. Prawidłowo działająca na tym etapie aplikacja zachowuje się jak poniżej
Krok 4. Funkcja podmieniająca znak na zadanej pozycji
Funkcję zrealizujemy przy pomocy pętli for. Funkcja będzie o trzech argumentach. Pierwszy, to ciąg znaków źródłowych. Drugi argument, to nowy znak. Trzeci argument, to pozycja. Funkcja będzie zwracać typ łańcuchowy- nowy zmieniony łańcuch znaków. Proponowany kod ma postać:
string zmienZnak(string zrodlo,char znak,int poz)
{
string sNowy = "";
for (int i = 0; i < zrodlo.Length; i++)
{
char z = zrodlo[i];
if (i == poz) z = znak;
sNowy += z.ToString();
}
return sNowy;
}
Krok 5. Podmieniamy znak na zadanej pozycji
Utworzoną funkcję wywołamy w zdarzeniu Click przycisku button2
private void button2_Click(object sender, EventArgs e)
{
int poz = Convert.ToInt16(textBox2.Text);
label3.Text = zmienZnak(textBox1.Text, textBox3.Text[0],poz);
}
Skompiluj program i sprawdź efekt działania. Prawidłowo działająca na tym etapie aplikacja zachowuje się jak poniżej