0Pricing
C# Academy · Lekcja

Zakresy z tablicami i ciągami znaków

Pobieraj wycinki tablic, zakresów pamięci i podciągów.

Zakresy z tablicami i ciągami znaków to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 4 lekcji w sumie.

Wycinanie fragmentów tablic

Najczęstszym zastosowaniem zakresów jest wycinanie fragmentów tablic. Wyrażenie array[1..3] zwraca nową tablicę zawierającą wybrane elementy.

using System;

int[] data = { 10, 20, 30, 40, 50 };
int[] middle = data[1..3];
Console.WriteLine(string.Join(",", middle)); // 20,30

Fragmenty tablic są kopiami

W przypadku tablic wycięcie zakresu alokuje nową tablicę i kopiuje do niej elementy. Modyfikowanie fragmentu nie wpływa na oryginał.

using System;

int[] original = { 1, 2, 3, 4 };
int[] slice = original[0..2];
slice[0] = 99;
Console.WriteLine(original[0]); // 1 (unchanged)
Console.WriteLine(slice[0]);    // 99

Podciągi za pomocą zakresu

Indeksator typu string obsługuje Range, dzięki czemu można uzyskiwać podciągi bez wywoływania Substring z przesunięciami i długościami.

using System;

string text = "Hello, World";
string hello = text[0..5];
Console.WriteLine(hello); // Hello

Fragmenty ciągów od końca

Zakresy można łączyć z ^, aby pobierać końcową część ciągu, na przykład rozszerzenie pliku.

using System;

string file = "report.csv";
string ext = file[^3..];
Console.WriteLine(ext); // csv

Pojedynczy znak za pomocą Index

Indeksowanie ciągu za pomocą pojedynczego obiektu Index zwraca jeden element typu char. Aby uzyskać ostatni znak, należy użyć ^1.

using System;

string s = "Coddy";
char last = s[^1];
Console.WriteLine(last); // y

Usuwanie pierwszego lub ostatniego elementu

Zakresy otwarte z jednej strony ułatwiają usuwanie jednego elementu: ..^1 usuwa ostatni, a 1.. — pierwszy.

using System;

string quoted = "[value]";
string inner = quoted[1..^1];
Console.WriteLine(inner); // value

Dzielenie ciągu na części

Tekst można podzielić w znanej pozycji za pomocą dwóch wycięć zakresowych.

using System;

string code = "2026-05-30";
string year = code[..4];
string month = code[5..7];
string day = code[8..];
Console.WriteLine(year + " / " + month + " / " + day); // 2026 / 05 / 30

Spany do wycinania bez kopiowania

Aby uzyskać fragment bez alokowania pamięci, należy użyć AsSpan(). Fragment spanu jest widokiem na oryginalną pamięć, a nie kopią.

using System;

ReadOnlySpan<char> span = "Hello, World".AsSpan();
ReadOnlySpan<char> word = span[7..];
Console.WriteLine(word.ToString()); // World

Zakresy w pętlach

Wyciętą tablicę można bezpośrednio iterować za pomocą foreach.

using System;

int[] data = { 2, 4, 6, 8, 10 };
foreach (int n in data[1..4])
    Console.Write(n + " "); // 4 6 8
Console.WriteLine();

Granice są sprawdzane

Wycięcia wychodzące poza zakres powodują wyjątek ArgumentOutOfRangeException, dzięki czemu przypadkowe odczyty poza granicami kończą się natychmiast, zamiast prowadzić do uszkodzenia danych.

using System;

int[] d = { 1, 2, 3 };
try { var _ = d[1..10]; }
catch (ArgumentOutOfRangeException) { Console.WriteLine("slice out of bounds"); }

Praktyczny parser

Oto niewielki parser, który za pomocą zakresów i IndexOf wyodrębnia nazwę oraz domenę z adresu e-mail.

using System;

string email = "ada@coddy.dev";
int at = email.IndexOf('@');
string user = email[..at];
string domain = email[(at + 1)..];
Console.WriteLine(user + " | " + domain); // ada | coddy.dev

Szybkie sprawdzenie

Należy sprawdzić swoją wiedzę o wycinaniu fragmentów tablic i ciągów znaków za pomocą zakresów.

Podsumowanie

Dowiedzieli się Państwo, jak zakresy stosuje się do tablic i ciągów znaków.

  • array[1..3] zwraca nową skopiowaną tablicę.
  • string[a..b] zwraca podciąg, a pojedynczy obiekt Index zwraca element typu char.
  • ..^1 i 1.. usuwają po jednym elemencie.
  • AsSpan() umożliwia wycinanie bez alokowania pamięci.

Często zadawane pytania

Czy lekcja „Zakresy z tablicami i ciągami znaków” jest bezpłatna?

Tak — pełny tekst „Zakresy z tablicami i ciągami znaków” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Zakresy z tablicami i ciągami znaków”?

Pobieraj wycinki tablic, zakresów pamięci i podciągów. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C# Academy?

Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Zakresy z tablicami i ciągami znaków”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?

Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Typ Index i operator ^
  2. Typ Range i operator ..
  3. Zakresy z tablicami i ciągami znaków
  4. Niestandardowe typy obsługujące zakresy
← Powrót do C# Academy