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,30Fragmenty 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]); // 99Podcią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); // HelloFragmenty 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); // csvPojedynczy 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); // yUsuwanie 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); // valueDzielenie 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 / 30Spany 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()); // WorldZakresy 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.devSzybkie 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 obiektIndexzwraca element typuchar...^1i1..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
- Typ Index i operator ^
- Typ Range i operator ..
- Zakresy z tablicami i ciągami znaków
- Niestandardowe typy obsługujące zakresy