C# で String.Split を使用して文字列を分割する方法
String.Split メソッドは、1 つまたは複数の区切り記号に基づいて入力文字列を分割することで部分文字列の配列を作成します。 このメソッドは、英語のように単語の間にスペースがある文章の場合に、単語の境界で文字列を分割する最も簡単な方法になります。 他の特定の文字や文字列で文字列を分割する際にも利用されます。
注意
この記事の C# 例は、Try.NET インライン コード ランナーとプレイグラウンドで実行されます。 [実行] ボタンを選択すると、対話型ウィンドウで例が実行されます。 コードを実行したら、コードを変更し、 [実行] をもう一度選択して変更後のコードを実行できます。 変更後のコードが対話型ウィンドウで実行されるか、コンパイルできなかった場合、対話型ウィンドウにすべての C# コンパイラ エラー メッセージが表示されます。
String.Split の例
次のコードは一般的なフレーズを単語ごとの文字列の配列に分割します。
string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');
foreach (var word in words)
{
System.Console.WriteLine($"<{word}>");
}
区切り文字のインスタンスごとに、返される配列で値が生成されます。 C# の配列はインデックスが 0 から始まるため、配列内の各文字列のインデックスは 0 で始まり、Array.Length プロパティから返された値から 1 を引いた数までになります。
string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');
for (int i = 0; i < words.Length; i++)
{
System.Console.WriteLine($"Index {i}: <{words[i]}>");
}
連続する区切り文字により、返される配列の値として空の文字列が生成されます。 空白文字を区切り記号として使用する次の例では、空の文字列がどのように作成されるかを確認できます。
string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');
foreach (var word in words)
{
System.Console.WriteLine($"<{word}>");
}
この動作により、コンマ区切り値 (CSV) ファイルなどの形式で表形式データを簡単に表すことができます。 連続するコンマは空の列を表します。
任意の StringSplitOptions.RemoveEmptyEntries パラメーターを渡し、返される配列で空の文字列を除外できます。 返されるコレクションの処理が複雑な場合、LINQ を使用し、結果のシーケンスを操作できます。
String.Split では、複数の区切り文字を使用できます。 次の例ではスペース、コンマ、ピリオド、コロン、タブを区切り文字として使用しています。これらは配列で Split に渡されます。 コードの一番下にあるループは、返される配列の各単語を表示します。
char[] delimiterChars = { ' ', ',', '.', ':', '\t' };
string text = "one\ttwo three:four,five six seven";
System.Console.WriteLine($"Original text: '{text}'");
string[] words = text.Split(delimiterChars);
System.Console.WriteLine($"{words.Length} words in text:");
foreach (var word in words)
{
System.Console.WriteLine($"<{word}>");
}
区切りの連続するインスタンスにより、出力配列で空の文字列が生成されます。
char[] delimiterChars = { ' ', ',', '.', ':', '\t' };
string text = "one\ttwo :,five six seven";
System.Console.WriteLine($"Original text: '{text}'");
string[] words = text.Split(delimiterChars);
System.Console.WriteLine($"{words.Length} words in text:");
foreach (var word in words)
{
System.Console.WriteLine($"<{word}>");
}
String.Split は、文字列の配列 (1 つの文字ではなく、対象の文字列を解析するための区切り記号として機能する文字シーケンス) を受け取ることができます。
string[] separatingStrings = { "<<", "..." };
string text = "one<<two......three<four";
System.Console.WriteLine($"Original text: '{text}'");
string[] words = text.Split(separatingStrings, System.StringSplitOptions.RemoveEmptyEntries);
System.Console.WriteLine($"{words.Length} substrings in text:");
foreach (var word in words)
{
System.Console.WriteLine(word);
}
GitHub Copilot を使用して文字列を分割する
IDE で GitHub Copilot を使用して、C# の String.Split
を使用して文字列を分割するコードを生成できます。
Visual Studio 2022 バージョン 17.8 以降を使用している場合は Visual Studio で AI ドリブン GitHub Copilot を試して入力文字列を 1 つ以上の区切り記号に基づいて部分文字列に分割するコードを生成できます。 次の例のように、Copilot チャット ウィンドウにプロンプトとして質問を送信します。 エディター ウィンドウ自体で インライン チャット を使用してプロンプトを送信することもできます。
Note
GitHub Copilot では AI を利用しているため、想定外のことや間違いが起こる可能性があります。 生成されたコードまたは提案を必ず確認してください。 GitHub Copilot の一般的な用途、製品への影響、人間の監視、プライバシーの詳細については、 GitHub Copilot に関する FAQを参照してください。
次のテキストは、Copilot Chat のプロンプトの例を示しています。
Split.String を使用して文字列を部分文字列に分割する C# コードを生成します。 入力文字列は "You win some. あなたはいくつかを失う。区切り記号はスペースとピリオドです。 出力例を示します。
要件に従って文字列と区切り記号を使用するようにプロンプトをカスタマイズできます。
スラッシュ コマンド、ファイル、メソッド、クラスへの参照、スレッドなどのチャット機能を使用して、意図を設定し、スコープ指定されたコンテキストでより適切な回答を得ることができます。 IDE で開いている既存のファイルの場合は、 /generate code to split string1 in #Filename by delimiter spaces
とのインライン チャットを使用して GitHub Copilot にメッセージを表示できます。
次の出力は、Copilot Chat の応答の例を示しています。
Here is an example of how you can use the Split method in C# to split the string "You win some. You lose some." using space and period as delimiters:
using System;
class Program
{
static void Main()
{
string input = "You win some. You lose some.";
char[] delimiters = new char[] { ' ', '.' };
string[] substrings = input.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
foreach (string substring in substrings)
{
Console.WriteLine(substring);
}
}
}
**Example Output**
You
win
some
You
lose
some
Copilot がコード ブロックを返す場合、応答には、コードをコピーする、コードを新しいファイルに挿入する、またはコード出力をプレビューするオプションが含まれます。
Note
結果は、サンプルの回答に示されているものと異なる場合があります。 AI モデルは非決定論的です。つまり、同じ質問を受けたときに異なる応答を返す場合があります。 これは、時間の経過に伴う学習と適応の進行、言語バリエーション、チャット履歴などのコンテキストの変更などが原因である可能性があります。
詳細については、以下を参照してください:
- GitHub Copilot セキュリティ センター
- Visual Studio の GitHub Copilot
- VS Code の GitHub Copilot
関連項目
.NET