配列と文字列の範囲
配列、スパン、部分文字列をスライスします。
「配列と文字列の範囲」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。
配列をスライスする
範囲の最も一般的な用途は、配列のスライスです。array[1..3] は、選択した要素を含む新しい配列を返します。
using System;
int[] data = { 10, 20, 30, 40, 50 };
int[] middle = data[1..3];
Console.WriteLine(string.Join(",", middle)); // 20,30配列のスライスはコピー
配列を範囲でスライスすると、新しい配列が割り当てられ、要素がコピーされます。スライスを変更しても、元の配列には影響しません。
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]); // 99Range による部分文字列
string のインデクサーは Range に対応しているため、オフセットと長さを指定して Substring を呼び出さなくても部分文字列を取得できます。
using System;
string text = "Hello, World";
string hello = text[0..5];
Console.WriteLine(hello); // Hello文字列を末尾からスライスする
範囲と ^ を組み合わせると、ファイル拡張子のように文字列の末尾部分を取り出せます。
using System;
string file = "report.csv";
string ext = file[^3..];
Console.WriteLine(ext); // csvIndex で 1 文字を取得する
単一の Index で文字列にインデックスを指定すると、1 つの char が返されます。最後の文字を取得するには ^1 を使用します。
using System;
string s = "Coddy";
char last = s[^1];
Console.WriteLine(last); // y先頭または末尾を取り除く
上限または下限を省略した範囲を使うと、1 つの要素を簡単に取り除けます。..^1 は最後の要素を、1.. は最初の要素を取り除きます。
using System;
string quoted = "[value]";
string inner = quoted[1..^1];
Console.WriteLine(inner); // value文字列を部分に分割する
2 つの範囲スライスを使うと、既知の位置でテキストを分割できます。
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コピーなしのスライスに使う Span
割り当てなしでスライスしたい場合は、AsSpan() を使用してください。Span のスライスはコピーではなく、元のメモリ上の一部分を表します。
using System;
ReadOnlySpan<char> span = "Hello, World".AsSpan();
ReadOnlySpan<char> word = span[7..];
Console.WriteLine(word.ToString()); // Worldループで範囲を使う
スライスした配列は、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();境界はチェックされる
範囲外のスライスでは ArgumentOutOfRangeException がスローされるため、意図しない読み過ぎはデータを破損させる前に即座に失敗します。
using System;
int[] d = { 1, 2, 3 };
try { var _ = d[1..10]; }
catch (ArgumentOutOfRangeException) { Console.WriteLine("slice out of bounds"); }実用的なパーサー
ここでは、範囲と IndexOf を使ってメールアドレスから名前とドメインを取り出す小さなパーサーを示します。
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簡単な確認
配列と文字列での範囲スライスについての理解を確認してください。
まとめ
範囲を配列と文字列に適用する方法を学びました。
array[1..3]は新しいコピー済みの配列を返します。string[a..b]は部分文字列を返し、単一のIndexはcharを返します。..^1と1..は 1 つの要素を取り除きます。AsSpan()を使うと、割り当てなしでスライスできます。
よくある質問
「配列と文字列の範囲」レッスンは無料ですか?
はい。「配列と文字列の範囲」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。
「配列と文字列の範囲」で何を学びますか?
配列、スパン、部分文字列をスライスします。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
C# Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「配列と文字列の範囲」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このC# Academyレッスンでコードを書いて実行できますか?
はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。