Indeksowanie stringa w C#

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

W C# obiekt typu string można traktować jak ciąg znaków. Dostęp do pojedynczego znaku uzyskuje się za pomocą operatora indeksowania [].

Indeksy są liczone od zera, więc pierwszy znak ma indeks 0, drugi 1, a ostatni ma indeks Length - 1.

Przykład

string tekst = "ABC123";
char pierwszy = tekst[0]; // 'A'
char ostatni = tekst[tekst.Length - 1]; // '3'

Wyrażenie tekst[index] zwraca wartość typu char, czyli pojedynczy znak.

Zakres indeksów

Dla napisu o długości Length poprawne indeksy to:

0 ... Length - 1

Próba odczytu znaku spoza zakresu spowoduje błąd wykonania, np. IndexOutOfRangeException.

Zastosowanie przy losowaniu znaków

Indeksowanie często pojawia się przy generowaniu losowych haseł:

string pula = "ABC123";
Random random = new Random();
char znak = pula[random.Next(0, pula.Length)];

W tym przykładzie losowany jest indeks znaku z napisu pula, a następnie pobierany jest znak o tym indeksie.

Trzeba pamiętać, że w metodzie Random.Next(min, max) górna granica max jest wyłączna. Dlatego, aby uwzględnić ostatni znak napisu, należy użyć pula.Length, a nie pula.Length - 1 jako drugiego argumentu.