方法: String.Split を使用して文字列を解析する (C# ガイド)How to: Parse Strings Using String.Split (C# Guide)

String.Split メソッドは、1 つまたは複数の区切り記号に基づいて入力文字列を分割することで部分文字列の配列を作成します。The String.Split method creates an array of substrings by splitting the input string based on one or more delimiters. 英語のように単語の間にスペースがある文章の場合に、単語の境界で文字列を分割する最も簡単な方法になります。It is often the easiest way to separate a string on word boundaries. 他の特定の文字や文字列で文字列を分割する際にも利用されます。It is also used to split strings on other specific characters or strings.

注意

この記事の C# 例は、Try.NET インライン コード ランナーとプレイグラウンドで実行されます。The C# examples in this article run in the Try.NET inline code runner and playground. [実行] ボタンを選択すると、対話型ウィンドウで例が実行されます。Select the Run button to run an example in an interactive window. コードを実行したら、コードを変更し、 [実行] をもう一度選択して変更後のコードを実行できます。Once you execute the code, you can modify it and run the modified code by selecting Run again. 変更後のコードが対話型ウィンドウで実行されるか、コンパイルできなかった場合、対話型ウィンドウにすべての C# コンパイラ エラー メッセージが表示されます。The modified code either runs in the interactive window or, if compilation fails, the interactive window displays all C# compiler error messages.

次のコードは一般的なフレーズを単語ごとの文字列の配列に分割します。The following code splits a common phrase into an array of strings for each word.

string phrase = "The quick brown fox jumps over the lazy dog.";
string[] words = phrase.Split(' ');

foreach (var word in words)
{
    System.Console.WriteLine($"<{word}>");
}

区切り文字のインスタンスごとに、返される配列で値が生成されます。Every instance of a separator character produces a value in the returned array. 連続する区切り文字により、返される配列の値として空の文字列が生成されます。Consecutive separator characters produce the empty string as a value in the returned array. 次の例でこれを確認できます。次の例では区切り文字としてスペースが使用されています。You can see this in the following example, which uses space as a separator:

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) ファイルなどの形式で表形式データを簡単に表すことができます。This behavior makes it easier for formats like comma separated values (CSV) files representing tabular data. 連続するコンマは空の列を表します。Consecutive commas represent a blank column.

任意の StringSplitOptions.RemoveEmptyEntries パラメーターを渡し、返される配列で空の文字列を除外できます。You can pass an optional StringSplitOptions.RemoveEmptyEntries parameter to exclude any empty strings in the returned array. 返されるコレクションの処理が複雑な場合、LINQ を使用し、結果のシーケンスを操作できます。For more complicated processing of the returned collection, you can use LINQ to manipulate the result sequence.

String.Split では、複数の区切り文字を使用できます。String.Split can use multiple separator characters. 次の例ではスペース、コンマ、ピリオド、コロン、タブを使用しています。すべて、これらの区切り文字を格納した配列で Split に渡されます。The following example uses spaces, commas, periods, colons, and tabs, all passed in an array containing these separating characters, to Split. コードの一番下にあるループは、返される配列の各単語を表示します。The loop at the bottom of the code displays each of the words in the returned array.

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}>");
}

区切りの連続するインスタンスにより、出力配列で空の文字列が生成されます。Consecutive instances of any separator produce the empty string in the output array:

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.Split can take an array of strings (character sequences that act as separators for parsing the target string, instead of single characters).

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 リポジトリのコードを見て、これらのサンプルを試すことができます。You can try these samples by looking at the code in our GitHub repository. または、サンプルを zip ファイルとしてダウンロードすることができます。Or you can download the samples as a zip file.

関連項目See also