String.Split メソッド

定義

このインスタンス内の、指定された文字列または Unicode 文字の配列の要素で区切られた部分文字列を格納する文字列配列を返します。

オーバーロード

Split(Char, Int32, StringSplitOptions)

指定された 1 つの区切り文字およびオプション (任意) に基づいて文字列を最大数の部分文字列に分割します。 指定された文字区切り記号に基づいて文字列を最大数の部分文字列に分割します。オプションで、結果からの空の部分文字列を省略します。

Split(String[], Int32, StringSplitOptions)

指定された区切り文字列およびオプション (任意) に基づいて文字列を最大数の部分文字列に分割します。

Split(Char[], Int32, StringSplitOptions)

指定された区切り文字およびオプション (任意) に基づいて文字列を最大数の部分文字列に分割します。

Split(String[], StringSplitOptions)

指定された 1 つの区切り文字列およびオプション (任意) に基づいて文字列を部分文字列に分割します。

Split(String, Int32, StringSplitOptions)

指定された 1 つの区切り文字列およびオプション (任意) に基づいて文字列を最大数の部分文字列に分割します。

Split(Char[], StringSplitOptions)

指定された区切り文字およびオプションに基づいて文字列を部分文字列に分割します。

Split(Char[], Int32)

指定された区切り文字に基づいて文字列を最大数の部分文字列に分割します。

Split(Char, StringSplitOptions)

指定された 1 つの区切り文字およびオプション (任意) に基づいて文字列を部分文字列に分割します。

Split(String, StringSplitOptions)

指定された文字列の区切り記号に基づいて文字列を部分文字列に分割します。

Split(Char[])

指定された区切り文字に基づいて文字列を部分文字列に分割します。

注釈

Split は、区切られた文字列を部分文字列に分割する場合に使用します。 文字配列または文字列配列を使用して、0個以上の区切り文字または文字列を指定できます。 区切り文字が指定されていない場合、文字列は空白文字で分割されます。

メソッドのオーバーロードを使用すると、メソッド Split (メソッド) によって返される部分文字列の数を制限し、 Split(Char[], Int32) 空の文字列を含めるか、部分文字列を結果に含めるか (メソッド Split(Char[], StringSplitOptions)Split(String[], StringSplitOptions) メソッド)、またはその両方を実行するか (メソッドとメソッド) を指定でき Split(Char[], Int32, StringSplitOptions) Split(String[], Int32, StringSplitOptions) ます。

ヒント

Splitメソッドは、区切られた文字列を部分文字列に分割するのに常に最適な方法であるとは限りません。 区切られた文字列のすべての部分文字列を抽出したくない場合、または区切り記号のセットではなくパターンに基づいて文字列を解析する場合は、正規表現の使用を検討するか、メソッドを使用して文字のインデックスを返す検索メソッドの1つを組み合わせてください Substring 。 詳細については、「 文字列から部分文字列を抽出する」を参照してください。

次の例では、String.Split() の 3 つの異なるオーバーロードを示します。 最初の例では、オーバーロードを呼び出し、 Split(Char[]) 1 つの区切り記号を渡します。

string s = "You win some. You lose some.";

string[] subs = s.Split(' ');

foreach (var sub in subs)
{
    Console.WriteLine($"Substring: {sub}");
}

// This example produces the following output:
//
// Substring: You
// Substring: win
// Substring: some.
// Substring: You
// Substring: lose
// Substring: some.
Dim s As String = "You win some. You lose some."
Dim subs As String() = s.Split()

For Each substring As String In subs
    Console.WriteLine($"Substring: {substring}")
Next

' This example produces the following output:
'
' Substring: You
' Substring: win
' Substring: some.
' Substring: You
' Substring: lose
' Substring: some.

ご覧のように、部分文字列の 2 つにピリオド文字 (.) が含まれています。 ピリオド文字を除外する場合は、ピリオド文字を追加の区切り文字として追加できます。 その方法を次の例に示します。

string s = "You win some. You lose some.";

string[] subs = s.Split(' ', '.');

foreach (var sub in subs)
{
    Console.WriteLine($"Substring: {sub}");
}

// This example produces the following output:
//
// Substring: You
// Substring: win
// Substring: some
// Substring:
// Substring: You
// Substring: lose
// Substring: some
// Substring:
Dim s As String = "You win some. You lose some."
Dim subs As String() = s.Split(" "c, "."c)

For Each substring As String In subs
    Console.WriteLine($"Substring: {substring}")
Next

' This example produces the following output:
'
' Substring: You
' Substring: win
' Substring: some
' Substring:
' Substring: You
' Substring: lose
' Substring: some
' Substring:

部分文字列からピリオドは削除されましたが、今度は 2 つの余分な空の部分文字列が含まれるようになっています。 これらの空の部分文字列は、単語とそれに続く期間との間の部分文字列を表します。 結果の配列から空の部分文字列を省略するには、Split(Char[], StringSplitOptions) のオーバーロードを呼び出し、options パラメーターとして StringSplitOptions.RemoveEmptyEntries を指定します。

string s = "You win some. You lose some.";
char[] separators = new char[] { ' ', '.' };

string[] subs = s.Split(separators, StringSplitOptions.RemoveEmptyEntries);

foreach (var sub in subs)
{
    Console.WriteLine($"Substring: {sub}");
}

// This example produces the following output:
//
// Substring: You
// Substring: win
// Substring: some
// Substring: You
// Substring: lose
// Substring: some
Dim s As String = "You win some. You lose some."
Dim separators As Char() = New Char() {" "c, "."c}
Dim subs As String() = s.Split(separators, StringSplitOptions.RemoveEmptyEntries)

For Each substring As String In subs
    Console.WriteLine($"Substring: {substring}")
Next

' This example produces the following output:
'
' Substring: You
' Substring: win
' Substring: some
' Substring: You
' Substring: lose
' Substring: some

の個々のオーバーロードのセクションには、 String.Split() さらに例が含まれています。

Split(Char, Int32, StringSplitOptions)

指定された 1 つの区切り文字およびオプション (任意) に基づいて文字列を最大数の部分文字列に分割します。 指定された文字区切り記号に基づいて文字列を最大数の部分文字列に分割します。オプションで、結果からの空の部分文字列を省略します。

public string[] Split (char separator, int count, StringSplitOptions options = System.StringSplitOptions.None);
member this.Split : char * int * StringSplitOptions -> string[]
Public Function Split (separator As Char, count As Integer, Optional options As StringSplitOptions = System.StringSplitOptions.None) As String()

パラメーター

separator
Char

このインスタンス内の部分文字列を区切る文字。

count
Int32

配列に必要な要素の最大数。

options
StringSplitOptions

部分文字列をトリミングして空の部分文字列を含めるかどうかを指定する列挙値のビットごとの組み合わせ。

戻り値

String[]

separator で区切られた、このインスタンスの最大 count の部分文字列を格納する配列。

注釈

文字列が既に 1 回分割されているが、文字列の末尾に到達していない場合、返される配列の最後の文字列には、このインスタンスの残りの末尾の部分文字列がそのまま含まれます。 count

適用対象

Split(String[], Int32, StringSplitOptions)

指定された区切り文字列およびオプション (任意) に基づいて文字列を最大数の部分文字列に分割します。

public:
 cli::array <System::String ^> ^ Split(cli::array <System::String ^> ^ separator, int count, StringSplitOptions options);
public string[] Split (string[] separator, int count, StringSplitOptions options);
public string[] Split (string[]? separator, int count, StringSplitOptions options);
[System.Runtime.InteropServices.ComVisible(false)]
public string[] Split (string[] separator, int count, StringSplitOptions options);
member this.Split : string[] * int * StringSplitOptions -> string[]
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.Split : string[] * int * StringSplitOptions -> string[]
Public Function Split (separator As String(), count As Integer, options As StringSplitOptions) As String()

パラメーター

separator
String[]

この文字列から部分文字列を取り出すために区切り文字として使用する文字列、区切り文字が含まれていない空の配列、または null

count
Int32

返される最大の部分文字列数。

options
StringSplitOptions

部分文字列をトリミングして空の部分文字列を含めるかどうかを指定する列挙値のビットごとの組み合わせ。

戻り値

String[]

この文字列を、separator 配列のいずれかまたは複数の要素 (文字列) で区切ることによって取り出された部分文字列を格納する配列。 詳細については、「解説」を参照してください。

属性

例外

count が負の値です。

optionsStringSplitOptions 値のいずれでもありません。

次の例では、 StringSplitOptions 列挙体を使用して、メソッドによって生成される部分文字列を含めたり除外したりし Split ます。

// This example demonstrates the String.Split(Char[], Boolean) and 
//                               String.Split(Char[], Int32, Boolean) methods
using namespace System;
void Show( array<String^>^entries )
{
   Console::WriteLine( "The return value contains these {0} elements:", entries->Length );
   System::Collections::IEnumerator^ myEnum = entries->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      String^ entry = safe_cast<String^>(myEnum->Current);
      Console::Write( "<{0}>", entry );
   }

   Console::Write( "{0}{0}", Environment::NewLine );
}

int main()
{
   String^ s = ",one,,,two,,,,,three,,";
   array<Char>^sep = gcnew array<Char>{
      ','
   };
   array<String^>^result;
   
   //
   Console::WriteLine( "The original string is \"{0}\".", s );
   Console::WriteLine( "The separation character is '{0}'.", sep[ 0 ] );
   Console::WriteLine();
   
   //
   Console::WriteLine( "Split the string and return all elements:" );
   result = s->Split( sep, StringSplitOptions::None );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return all non-empty elements:" );
   result = s->Split( sep, StringSplitOptions::RemoveEmptyEntries );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return 2 elements:" );
   result = s->Split( sep, 2, StringSplitOptions::None );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return 2 non-empty elements:" );
   result = s->Split( sep, 2, StringSplitOptions::RemoveEmptyEntries );
   Show( result );
}

/*
This example produces the following results:

The original string is ",one,,,two,,,,,three,,".
The separation character is ','.

Split the string and return all elements:
The return value contains these 12 elements:
<><one><><><two><><><><><three><><>

Split the string and return all non-empty elements:
The return value contains these 3 elements:
<one><two><three>

Split the string and return 2 elements:
The return value contains these 2 elements:
<><one,,,two,,,,,three,,>

Split the string and return 2 non-empty elements:
The return value contains these 2 elements:
<one><,,two,,,,,three,,>

*/
// This example demonstrates the String.Split() methods that use
// the StringSplitOptions enumeration.
string s1 = ",ONE,,TWO,,,THREE,,";
string s2 = "[stop]" +
            "ONE[stop][stop]" +
            "TWO[stop][stop][stop]" +
            "THREE[stop][stop]";
char[] charSeparators = new char[] { ',' };
string[] stringSeparators = new string[] { "[stop]" };
string[] result;
// ------------------------------------------------------------------------------
// Split a string delimited by characters.
// ------------------------------------------------------------------------------
Console.WriteLine("1) Split a string delimited by characters:\n");

// Display the original string and delimiter characters.
Console.WriteLine($"1a) The original string is \"{s1}\".");
Console.WriteLine($"The delimiter character is '{charSeparators[0]}'.\n");

// Split a string delimited by characters and return all elements.
Console.WriteLine("1b) Split a string delimited by characters and " +
                  "return all elements:");
result = s1.Split(charSeparators, StringSplitOptions.None);
Show(result);

// Split a string delimited by characters and return all non-empty elements.
Console.WriteLine("1c) Split a string delimited by characters and " +
                  "return all non-empty elements:");
result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries);
Show(result);

// Split the original string into the string and empty string before the
// delimiter and the remainder of the original string after the delimiter.
Console.WriteLine("1d) Split a string delimited by characters and " +
                  "return 2 elements:");
result = s1.Split(charSeparators, 2, StringSplitOptions.None);
Show(result);

// Split the original string into the string after the delimiter and the
// remainder of the original string after the delimiter.
Console.WriteLine("1e) Split a string delimited by characters and " +
                  "return 2 non-empty elements:");
result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries);
Show(result);

// ------------------------------------------------------------------------------
// Split a string delimited by another string.
// ------------------------------------------------------------------------------
Console.WriteLine("2) Split a string delimited by another string:\n");

// Display the original string and delimiter string.
Console.WriteLine($"2a) The original string is \"{s2}\".");
Console.WriteLine($"The delimiter string is \"{stringSeparators[0]}\".\n");

// Split a string delimited by another string and return all elements.
Console.WriteLine("2b) Split a string delimited by another string and " +
                  "return all elements:");
result = s2.Split(stringSeparators, StringSplitOptions.None);
Show(result);

// Split the original string at the delimiter and return all non-empty elements.
Console.WriteLine("2c) Split a string delimited by another string and " +
                  "return all non-empty elements:");
result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
Show(result);

// Split the original string into the empty string before the
// delimiter and the remainder of the original string after the delimiter.
Console.WriteLine("2d) Split a string delimited by another string and " +
                  "return 2 elements:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.None);
Show(result);

// Split the original string into the string after the delimiter and the
// remainder of the original string after the delimiter.
Console.WriteLine("2e) Split a string delimited by another string and " +
                  "return 2 non-empty elements:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries);
Show(result);

// Display the array of separated strings using a local function
void Show(string[] entries)
{
    Console.WriteLine($"The return value contains these {entries.Length} elements:");
    foreach (string entry in entries)
    {
        Console.Write($"<{entry}>");
    }
    Console.Write("\n\n");
}

/*
This example produces the following results:

1) Split a string delimited by characters:

1a) The original string is ",ONE,,TWO,,,THREE,,".
The delimiter character is ','.

1b) Split a string delimited by characters and return all elements:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>

1c) Split a string delimited by characters and return all non-empty elements:
The return value contains these 3 elements:
<ONE><TWO><THREE>

1d) Split a string delimited by characters and return 2 elements:
The return value contains these 2 elements:
<><ONE,,TWO,,,THREE,,>

1e) Split a string delimited by characters and return 2 non-empty elements:
The return value contains these 2 elements:
<ONE><TWO,,,THREE,,>

2) Split a string delimited by another string:

2a) The original string is "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]".
The delimiter string is "[stop]".

2b) Split a string delimited by another string and return all elements:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>

2c) Split a string delimited by another string and return all non-empty elements:
The return value contains these 3 elements:
<ONE><TWO><THREE>

2d) Split a string delimited by another string and return 2 elements:
The return value contains these 2 elements:
<><ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]>

2e) Split a string delimited by another string and return 2 non-empty elements:
The return value contains these 2 elements:
<ONE><TWO[stop][stop][stop]THREE[stop][stop]>

*/
    Dim s1 As String = ",ONE,,TWO,,,THREE,,"
    Dim s2 As String = "[stop]" &
                       "ONE[stop][stop]" &
                       "TWO[stop][stop][stop]" &
                       "THREE[stop][stop]"
    Dim charSeparators() As Char = {","c}
    Dim stringSeparators() As String = {"[stop]"}
    Dim result() As String
    ' ------------------------------------------------------------------------------
    ' Split a string delimited by characters.
    ' ------------------------------------------------------------------------------
    Console.WriteLine("1) Split a string delimited by characters:" & vbCrLf)

    ' Display the original string and delimiter characters.
    Console.WriteLine("1a) The original string is ""{0}"".", s1)
    Console.WriteLine("The delimiter character is '{0}'." & vbCrLf, charSeparators(0))

    ' Split a string delimited by characters and return all elements.
    Console.WriteLine("1b) Split a string delimited by characters and " &
                      "return all elements:")
    result = s1.Split(charSeparators, StringSplitOptions.None)
    Show(result)

    ' Split a string delimited by characters and return all non-empty elements.
    Console.WriteLine("1c) Split a string delimited by characters and " &
                      "return all non-empty elements:")
    result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)
    Show(result)

    ' Split the original string into the string and empty string before the 
    ' delimiter and the remainder of the original string after the delimiter.
    Console.WriteLine("1d) Split a string delimited by characters and " &
                      "return 2 elements:")
    result = s1.Split(charSeparators, 2, StringSplitOptions.None)
    Show(result)

    ' Split the original string into the string after the delimiter and the 
    ' remainder of the original string after the delimiter.
    Console.WriteLine("1e) Split a string delimited by characters and " &
                      "return 2 non-empty elements:")
    result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
    Show(result)

    ' ------------------------------------------------------------------------------
    ' Split a string delimited by another string.
    ' ------------------------------------------------------------------------------
    Console.WriteLine("2) Split a string delimited by another string:" & vbCrLf)

    ' Display the original string and delimiter string.
    Console.WriteLine("2a) The original string is ""{0}"".", s2)
    Console.WriteLine("The delimiter string is ""{0}""." & vbCrLf, stringSeparators(0))

    ' Split a string delimited by another string and return all elements.
    Console.WriteLine("2b) Split a string delimited by another string and " &
                      "return all elements:")
    result = s2.Split(stringSeparators, StringSplitOptions.None)
    Show(result)

    ' Split the original string at the delimiter and return all non-empty elements.
    Console.WriteLine("2c) Split a string delimited by another string and " &
                      "return all non-empty elements:")
    result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries)
    Show(result)

    ' Split the original string into the empty string before the 
    ' delimiter and the remainder of the original string after the delimiter.
    Console.WriteLine("2d) Split a string delimited by another string and " &
                      "return 2 elements:")
    result = s2.Split(stringSeparators, 2, StringSplitOptions.None)
    Show(result)

    ' Split the original string into the string after the delimiter and the 
    ' remainder of the original string after the delimiter.
    Console.WriteLine("2e) Split a string delimited by another string and " &
                      "return 2 non-empty elements:")
    result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
    Show(result)

End Sub


' Display the array of separated strings.
Public Shared Sub Show(ByVal entries() As String)
    Console.WriteLine("The return value contains these {0} elements:", entries.Length)
    Dim entry As String
    For Each entry In entries
        Console.Write("<{0}>", entry)
    Next entry
    Console.Write(vbCrLf & vbCrLf)

End Sub

'This example produces the following results:
'
'1) Split a string delimited by characters:
'
'1a) The original string is ",ONE,,TWO,,,THREE,,".
'The delimiter character is ','.
'
'1b) Split a string delimited by characters and return all elements:
'The return value contains these 9 elements:
'<><ONE><><TWO><><><THREE><><>
'
'1c) Split a string delimited by characters and return all non-empty elements:
'The return value contains these 3 elements:
'<ONE><TWO><THREE>
'
'1d) Split a string delimited by characters and return 2 elements:
'The return value contains these 2 elements:
'<><ONE,,TWO,,,THREE,,>
'
'1e) Split a string delimited by characters and return 2 non-empty elements:
'The return value contains these 2 elements:
'<ONE><TWO,,,THREE,,>
'
'2) Split a string delimited by another string:
'
'2a) The original string is "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]".
'The delimiter string is "[stop]".
'
'2b) Split a string delimited by another string and return all elements:
'The return value contains these 9 elements:
'<><ONE><><TWO><><><THREE><><>
'
'2c) Split a string delimited by another string and return all non-empty elements:
'The return value contains these 3 elements:
'<ONE><TWO><THREE>
'
'2d) Split a string delimited by another string and return 2 elements:
'The return value contains these 2 elements:
'<><ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]>
'
'2e) Split a string delimited by another string and return 2 non-empty elements:
'The return value contains these 2 elements:
'<ONE><TWO[stop][stop][stop]THREE[stop][stop]>
'

注釈

区切り記号文字列は、返される配列の要素には含まれません。

このインスタンスに内のいずれかの文字列が含まれていない場合、 separator または count パラメーターが1の場合、返される配列は、このインスタンスを格納する1つの要素で構成されます。

separatorパラメーターがであるか、文字を含んでいない場合は null 、空白文字が区切り記号と見なされます。 空白文字は Unicode 規格によって定義され、 Char.IsWhiteSpace メソッドが true 渡された場合はを返します。

パラメーターにを渡すには null 、の型を指定して、 string[] separator null 他のいくつかのオーバーロード (など) からの呼び出しを明確にする必要があり Split(Char[], Int32, StringSplitOptions) ます。 次の例は、このオーバーロードを明確に識別するいくつかの方法を示しています。

string phrase = "The quick  brown fox";

_ = phrase.Split(default(string[]), 3, StringSplitOptions.RemoveEmptyEntries);

_ = phrase.Split((string[])null, 3, StringSplitOptions.RemoveEmptyEntries);

_ = phrase.Split(null as string[], 3, StringSplitOptions.RemoveEmptyEntries);
Dim phrase As String = "The quick brown fox"
Dim words() As String

words = phrase.Split(TryCast(Nothing, String()), 3,
                       StringSplitOptions.RemoveEmptyEntries)

words = phrase.Split(New String() {}, 3,
                     StringSplitOptions.RemoveEmptyEntries)

countパラメーターがゼロの場合、または options パラメーターがで、 RemoveEmptyEntries このインスタンスの長さが0の場合は、空の配列が返されます。

の各要素は separator 、1つ以上の文字で構成される個別の区切り記号を定義します。 optionsパラメーターがであり、2つの区切り記号が隣接している場合 None 、またはこのインスタンスの先頭または末尾に区切り記号がある場合、対応する配列要素にはが含まれ Empty ます。

このインスタンスに複数の部分文字列が含まれている場合は、最初の count count -1 の部分文字列が count 戻り値の最初の-1 要素に返され、このインスタンスの残りの文字が戻り値の最後の要素に返されます。

countが部分文字列の数より大きい場合は、使用可能な部分文字列が返され、例外はスローされません。

区切り記号配列

内のいずれかの要素 separator が複数の文字で構成されている場合、部分文字列全体が区切り記号と見なされます。 たとえば、内のいずれかの要素 separator が "10" である場合、文字列 "This10is10a10string" を分割しようとしています。 この4つの要素を持つ配列 {"This"、"is"、"a"、"string" を返します。 }.

比較の詳細

メソッドは、 Split パラメーター内の1つ以上の文字列で区切られたこの文字列の部分文字列を抽出 separator し、それらの部分文字列を配列の要素として返します。

メソッドは、 Split 大文字と小文字を区別する序数の並べ替え規則を使用して比較を実行することで、区切り記号を検索します。 単語、文字列、および序数の並べ替えの詳細については、列挙体を参照してください System.Globalization.CompareOptions

メソッドは、 Split separator 値が null または空の文字列 ("") であるの要素を無視します。

の文字列に共通の文字が含まれている場合にあいまいな結果を避けるために、 separator Split メソッドはインスタンスの値の先頭から末尾まで処理を進め、インスタンス内の区切り記号と等しいの最初の要素と一致し separator ます。 インスタンスでの部分文字列の出現順序は、の要素の順序よりも優先され separator ます。

たとえば、値が "abcdef" であるインスタンスについて考えてみます。 の最初の要素 separator が "ef" で、2番目の要素が "bcde" の場合、分割操作の結果は "a" と "f" になります。 これは、"bcde" というインスタンス内の部分文字列が検出され、 separator 部分文字列 "f" が検出される前の内の要素と一致するためです。

ただし、の最初の要素 separator が "bcd" で、2番目の要素が "bc" の場合、split 操作の結果は "a" と "ef" になります。 これは、"bcd" が、 separator インスタンス内の区切り記号と一致するの最初の区切り記号であるためです。 最初の要素が "bc" で、2番目の要素が "bcd" であるために、区切り記号の順序が逆になった場合、結果は "a" と "def" になります。

パフォーマンスに関する考慮事項

メソッドは、 Split 返された配列オブジェクトにメモリを割り当て、 String 配列要素ごとにオブジェクトを割り当てます。 アプリケーションで最適なパフォーマンスが求められる場合、またはアプリケーションでメモリ割り当てを管理することが重要な場合は、メソッドまたはメソッドを使用して IndexOf IndexOfAny Compare 文字列内の部分文字列を検索することを検討してください。

文字列を区切り文字で分割する場合 IndexOf は、メソッドまたはメソッドを使用し IndexOfAny て、文字列内の区切り記号を検索します。 区切り文字列で文字列を分割する場合は、メソッドまたはメソッドを使用して、 IndexOf IndexOfAny 区切り記号文字列の最初の文字を検索します。 次に、メソッドを使用して、 Compare その最初の文字の後の文字が区切り記号文字列の残りの文字と等しいかどうかを確認します。

また、複数のメソッド呼び出しで同じ文字セットを使用して文字列を分割する場合は、 Split 1 つの配列を作成し、各メソッド呼び出しでそれを参照することを検討してください。 これにより、各メソッド呼び出しのオーバーヘッドが大幅に減少します。

注意 (呼び出し元)

.NET Framework 3.5 以前のバージョンでは、メソッドに文字が含まれていないか、または文字を含んでいないが渡された場合、メソッドは文字列をトリミングするのではなく、 Split(Char[]) separator null 少し異なる空白文字のセットを使用して文字列を分割し Trim(Char[]) ます。 .NET Framework 4 以降では、どちらのメソッドも、同じ Unicode の空白文字のセットを使用します。

適用対象

Split(Char[], Int32, StringSplitOptions)

指定された区切り文字およびオプション (任意) に基づいて文字列を最大数の部分文字列に分割します。

public:
 cli::array <System::String ^> ^ Split(cli::array <char> ^ separator, int count, StringSplitOptions options);
public string[] Split (char[] separator, int count, StringSplitOptions options);
public string[] Split (char[]? separator, int count, StringSplitOptions options);
[System.Runtime.InteropServices.ComVisible(false)]
public string[] Split (char[] separator, int count, StringSplitOptions options);
member this.Split : char[] * int * StringSplitOptions -> string[]
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.Split : char[] * int * StringSplitOptions -> string[]
Public Function Split (separator As Char(), count As Integer, options As StringSplitOptions) As String()

パラメーター

separator
Char[]

この文字列から部分文字列を取り出すために区切り文字として使用する文字の配列、区切り文字が含まれていない空の配列、または null

count
Int32

返される最大の部分文字列数。

options
StringSplitOptions

部分文字列をトリミングして空の部分文字列を含めるかどうかを指定する列挙値のビットごとの組み合わせ。

戻り値

String[]

この文字列を、separator のいずれかまたは複数の文字で区切ることによって取り出された部分文字列を格納する配列。 詳細については、「解説」を参照してください。

属性

例外

count が負の値です。

optionsStringSplitOptions 値のいずれでもありません。

次の例では、 StringSplitOptions 列挙体を使用して、メソッドによって生成される部分文字列を含めたり除外したりし Split ます。

// This example demonstrates the String.Split(Char[], Boolean) and 
//                               String.Split(Char[], Int32, Boolean) methods
using namespace System;
void Show( array<String^>^entries )
{
   Console::WriteLine( "The return value contains these {0} elements:", entries->Length );
   System::Collections::IEnumerator^ myEnum = entries->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      String^ entry = safe_cast<String^>(myEnum->Current);
      Console::Write( "<{0}>", entry );
   }

   Console::Write( "{0}{0}", Environment::NewLine );
}

int main()
{
   String^ s = ",one,,,two,,,,,three,,";
   array<Char>^sep = gcnew array<Char>{
      ','
   };
   array<String^>^result;
   
   //
   Console::WriteLine( "The original string is \"{0}\".", s );
   Console::WriteLine( "The separation character is '{0}'.", sep[ 0 ] );
   Console::WriteLine();
   
   //
   Console::WriteLine( "Split the string and return all elements:" );
   result = s->Split( sep, StringSplitOptions::None );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return all non-empty elements:" );
   result = s->Split( sep, StringSplitOptions::RemoveEmptyEntries );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return 2 elements:" );
   result = s->Split( sep, 2, StringSplitOptions::None );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return 2 non-empty elements:" );
   result = s->Split( sep, 2, StringSplitOptions::RemoveEmptyEntries );
   Show( result );
}

/*
This example produces the following results:

The original string is ",one,,,two,,,,,three,,".
The separation character is ','.

Split the string and return all elements:
The return value contains these 12 elements:
<><one><><><two><><><><><three><><>

Split the string and return all non-empty elements:
The return value contains these 3 elements:
<one><two><three>

Split the string and return 2 elements:
The return value contains these 2 elements:
<><one,,,two,,,,,three,,>

Split the string and return 2 non-empty elements:
The return value contains these 2 elements:
<one><,,two,,,,,three,,>

*/
// This example demonstrates the String.Split() methods that use
// the StringSplitOptions enumeration.
string s1 = ",ONE,,TWO,,,THREE,,";
string s2 = "[stop]" +
            "ONE[stop][stop]" +
            "TWO[stop][stop][stop]" +
            "THREE[stop][stop]";
char[] charSeparators = new char[] { ',' };
string[] stringSeparators = new string[] { "[stop]" };
string[] result;
// ------------------------------------------------------------------------------
// Split a string delimited by characters.
// ------------------------------------------------------------------------------
Console.WriteLine("1) Split a string delimited by characters:\n");

// Display the original string and delimiter characters.
Console.WriteLine($"1a) The original string is \"{s1}\".");
Console.WriteLine($"The delimiter character is '{charSeparators[0]}'.\n");

// Split a string delimited by characters and return all elements.
Console.WriteLine("1b) Split a string delimited by characters and " +
                  "return all elements:");
result = s1.Split(charSeparators, StringSplitOptions.None);
Show(result);

// Split a string delimited by characters and return all non-empty elements.
Console.WriteLine("1c) Split a string delimited by characters and " +
                  "return all non-empty elements:");
result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries);
Show(result);

// Split the original string into the string and empty string before the
// delimiter and the remainder of the original string after the delimiter.
Console.WriteLine("1d) Split a string delimited by characters and " +
                  "return 2 elements:");
result = s1.Split(charSeparators, 2, StringSplitOptions.None);
Show(result);

// Split the original string into the string after the delimiter and the
// remainder of the original string after the delimiter.
Console.WriteLine("1e) Split a string delimited by characters and " +
                  "return 2 non-empty elements:");
result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries);
Show(result);

// ------------------------------------------------------------------------------
// Split a string delimited by another string.
// ------------------------------------------------------------------------------
Console.WriteLine("2) Split a string delimited by another string:\n");

// Display the original string and delimiter string.
Console.WriteLine($"2a) The original string is \"{s2}\".");
Console.WriteLine($"The delimiter string is \"{stringSeparators[0]}\".\n");

// Split a string delimited by another string and return all elements.
Console.WriteLine("2b) Split a string delimited by another string and " +
                  "return all elements:");
result = s2.Split(stringSeparators, StringSplitOptions.None);
Show(result);

// Split the original string at the delimiter and return all non-empty elements.
Console.WriteLine("2c) Split a string delimited by another string and " +
                  "return all non-empty elements:");
result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
Show(result);

// Split the original string into the empty string before the
// delimiter and the remainder of the original string after the delimiter.
Console.WriteLine("2d) Split a string delimited by another string and " +
                  "return 2 elements:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.None);
Show(result);

// Split the original string into the string after the delimiter and the
// remainder of the original string after the delimiter.
Console.WriteLine("2e) Split a string delimited by another string and " +
                  "return 2 non-empty elements:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries);
Show(result);

// Display the array of separated strings using a local function
void Show(string[] entries)
{
    Console.WriteLine($"The return value contains these {entries.Length} elements:");
    foreach (string entry in entries)
    {
        Console.Write($"<{entry}>");
    }
    Console.Write("\n\n");
}

/*
This example produces the following results:

1) Split a string delimited by characters:

1a) The original string is ",ONE,,TWO,,,THREE,,".
The delimiter character is ','.

1b) Split a string delimited by characters and return all elements:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>

1c) Split a string delimited by characters and return all non-empty elements:
The return value contains these 3 elements:
<ONE><TWO><THREE>

1d) Split a string delimited by characters and return 2 elements:
The return value contains these 2 elements:
<><ONE,,TWO,,,THREE,,>

1e) Split a string delimited by characters and return 2 non-empty elements:
The return value contains these 2 elements:
<ONE><TWO,,,THREE,,>

2) Split a string delimited by another string:

2a) The original string is "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]".
The delimiter string is "[stop]".

2b) Split a string delimited by another string and return all elements:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>

2c) Split a string delimited by another string and return all non-empty elements:
The return value contains these 3 elements:
<ONE><TWO><THREE>

2d) Split a string delimited by another string and return 2 elements:
The return value contains these 2 elements:
<><ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]>

2e) Split a string delimited by another string and return 2 non-empty elements:
The return value contains these 2 elements:
<ONE><TWO[stop][stop][stop]THREE[stop][stop]>

*/
    Dim s1 As String = ",ONE,,TWO,,,THREE,,"
    Dim s2 As String = "[stop]" &
                       "ONE[stop][stop]" &
                       "TWO[stop][stop][stop]" &
                       "THREE[stop][stop]"
    Dim charSeparators() As Char = {","c}
    Dim stringSeparators() As String = {"[stop]"}
    Dim result() As String
    ' ------------------------------------------------------------------------------
    ' Split a string delimited by characters.
    ' ------------------------------------------------------------------------------
    Console.WriteLine("1) Split a string delimited by characters:" & vbCrLf)

    ' Display the original string and delimiter characters.
    Console.WriteLine("1a) The original string is ""{0}"".", s1)
    Console.WriteLine("The delimiter character is '{0}'." & vbCrLf, charSeparators(0))

    ' Split a string delimited by characters and return all elements.
    Console.WriteLine("1b) Split a string delimited by characters and " &
                      "return all elements:")
    result = s1.Split(charSeparators, StringSplitOptions.None)
    Show(result)

    ' Split a string delimited by characters and return all non-empty elements.
    Console.WriteLine("1c) Split a string delimited by characters and " &
                      "return all non-empty elements:")
    result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)
    Show(result)

    ' Split the original string into the string and empty string before the 
    ' delimiter and the remainder of the original string after the delimiter.
    Console.WriteLine("1d) Split a string delimited by characters and " &
                      "return 2 elements:")
    result = s1.Split(charSeparators, 2, StringSplitOptions.None)
    Show(result)

    ' Split the original string into the string after the delimiter and the 
    ' remainder of the original string after the delimiter.
    Console.WriteLine("1e) Split a string delimited by characters and " &
                      "return 2 non-empty elements:")
    result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
    Show(result)

    ' ------------------------------------------------------------------------------
    ' Split a string delimited by another string.
    ' ------------------------------------------------------------------------------
    Console.WriteLine("2) Split a string delimited by another string:" & vbCrLf)

    ' Display the original string and delimiter string.
    Console.WriteLine("2a) The original string is ""{0}"".", s2)
    Console.WriteLine("The delimiter string is ""{0}""." & vbCrLf, stringSeparators(0))

    ' Split a string delimited by another string and return all elements.
    Console.WriteLine("2b) Split a string delimited by another string and " &
                      "return all elements:")
    result = s2.Split(stringSeparators, StringSplitOptions.None)
    Show(result)

    ' Split the original string at the delimiter and return all non-empty elements.
    Console.WriteLine("2c) Split a string delimited by another string and " &
                      "return all non-empty elements:")
    result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries)
    Show(result)

    ' Split the original string into the empty string before the 
    ' delimiter and the remainder of the original string after the delimiter.
    Console.WriteLine("2d) Split a string delimited by another string and " &
                      "return 2 elements:")
    result = s2.Split(stringSeparators, 2, StringSplitOptions.None)
    Show(result)

    ' Split the original string into the string after the delimiter and the 
    ' remainder of the original string after the delimiter.
    Console.WriteLine("2e) Split a string delimited by another string and " &
                      "return 2 non-empty elements:")
    result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
    Show(result)

End Sub


' Display the array of separated strings.
Public Shared Sub Show(ByVal entries() As String)
    Console.WriteLine("The return value contains these {0} elements:", entries.Length)
    Dim entry As String
    For Each entry In entries
        Console.Write("<{0}>", entry)
    Next entry
    Console.Write(vbCrLf & vbCrLf)

End Sub

'This example produces the following results:
'
'1) Split a string delimited by characters:
'
'1a) The original string is ",ONE,,TWO,,,THREE,,".
'The delimiter character is ','.
'
'1b) Split a string delimited by characters and return all elements:
'The return value contains these 9 elements:
'<><ONE><><TWO><><><THREE><><>
'
'1c) Split a string delimited by characters and return all non-empty elements:
'The return value contains these 3 elements:
'<ONE><TWO><THREE>
'
'1d) Split a string delimited by characters and return 2 elements:
'The return value contains these 2 elements:
'<><ONE,,TWO,,,THREE,,>
'
'1e) Split a string delimited by characters and return 2 non-empty elements:
'The return value contains these 2 elements:
'<ONE><TWO,,,THREE,,>
'
'2) Split a string delimited by another string:
'
'2a) The original string is "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]".
'The delimiter string is "[stop]".
'
'2b) Split a string delimited by another string and return all elements:
'The return value contains these 9 elements:
'<><ONE><><TWO><><><THREE><><>
'
'2c) Split a string delimited by another string and return all non-empty elements:
'The return value contains these 3 elements:
'<ONE><TWO><THREE>
'
'2d) Split a string delimited by another string and return 2 elements:
'The return value contains these 2 elements:
'<><ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]>
'
'2e) Split a string delimited by another string and return 2 non-empty elements:
'The return value contains these 2 elements:
'<ONE><TWO[stop][stop][stop]THREE[stop][stop]>
'

注釈

区切り記号文字は、返される配列の要素には含まれません。

このインスタンスに の文字が含まれている場合、または パラメーターが 1 の場合、返される配列は、このインスタンスを含む separator count 1 つの要素で構成されます。

パラメーターが separator の場合 null 、または文字が含まれている場合、空白文字は区切り記号と見なされます。 空白文字は Unicode 標準で定義され、渡された場合、 メソッドは Char.IsWhiteSpace true を返します。

パラメーターに を渡す場合は、 などの他のオーバーロードからの呼び出しをあいまいにするために、 の型を指定 null char[] separator null する必要があります Split(String[], Int32, StringSplitOptions) 。 次の例は、このオーバーロードを明確に識別するいくつかの方法を示しています。

string phrase = "The quick  brown fox";

_ = phrase.Split(default(char[]), 3, StringSplitOptions.RemoveEmptyEntries);

_ = phrase.Split((char[])null, 3, StringSplitOptions.RemoveEmptyEntries);

_ = phrase.Split(null as char[], 3, StringSplitOptions.RemoveEmptyEntries);
Dim phrase As String = "The quick brown fox"
Dim words() As String

words = phrase.Split(TryCast(Nothing, Char()), 3,
                       StringSplitOptions.RemoveEmptyEntries)

words = phrase.Split(New Char() {}, 3,
                     StringSplitOptions.RemoveEmptyEntries)

パラメーターが 0 の場合、または パラメーターが で、このインスタンスの長さが 0 の場合は、空の count options RemoveEmptyEntries 配列が返されます。

の各要素は separator 、個別の区切り文字を定義します。 パラメーターが で、2 つの区切り記号が隣接している場合、またはこのインスタンスの先頭または末尾に区切り記号が見つかった場合、対応する配列要素には が options None 含されます Empty

このインスタンスに複数の部分文字列がある場合、最初の部分文字列から 1 を引いた部分文字列が戻り値の最初の要素から 1 を引いた値で返され、このインスタンスの残りの文字は戻り値の最後の要素で返されます。 count count count

countが部分文字列の数より大きい場合は、使用可能な部分文字列が返され、例外はスローされません。

パフォーマンスに関する考慮事項

メソッドは、 Split 返された配列オブジェクトにメモリを割り当て、 String 配列要素ごとにオブジェクトを割り当てます。 アプリケーションで最適なパフォーマンスが求められる場合、またはアプリケーションでメモリ割り当てを管理することが重要な場合は、メソッドまたはメソッドを使用して IndexOf IndexOfAny Compare 文字列内の部分文字列を検索することを検討してください。

文字列を区切り文字で分割する場合 IndexOf は、メソッドまたはメソッドを使用し IndexOfAny て、文字列内の区切り記号を検索します。 区切り文字列で文字列を分割する場合は、メソッドまたはメソッドを使用して、 IndexOf IndexOfAny 区切り記号文字列の最初の文字を検索します。 次に、メソッドを使用して、 Compare その最初の文字の後の文字が区切り記号文字列の残りの文字と等しいかどうかを確認します。

また、複数のメソッド呼び出しで同じ文字セットを使用して文字列を分割する場合は、 Split 1 つの配列を作成し、各メソッド呼び出しでそれを参照することを検討してください。 これにより、各メソッド呼び出しのオーバーヘッドが大幅に減少します。

注意 (呼び出し元)

.NET Framework 3.5 以前のバージョンでは、メソッドに文字が含まれていないか、または文字を含んでいないが渡された場合、メソッドは文字列をトリミングするのではなく、 Split(Char[]) separator null 少し異なる空白文字のセットを使用して文字列を分割し Trim(Char[]) ます。 .NET Framework 4 以降では、どちらのメソッドも、同じ Unicode の空白文字のセットを使用します。

適用対象

Split(String[], StringSplitOptions)

指定された 1 つの区切り文字列およびオプション (任意) に基づいて文字列を部分文字列に分割します。

public:
 cli::array <System::String ^> ^ Split(cli::array <System::String ^> ^ separator, StringSplitOptions options);
public string[] Split (string[] separator, StringSplitOptions options);
public string[] Split (string[]? separator, StringSplitOptions options);
[System.Runtime.InteropServices.ComVisible(false)]
public string[] Split (string[] separator, StringSplitOptions options);
member this.Split : string[] * StringSplitOptions -> string[]
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.Split : string[] * StringSplitOptions -> string[]
Public Function Split (separator As String(), options As StringSplitOptions) As String()

パラメーター

separator
String[]

この文字列から部分文字列を取り出すために区切り文字として使用する文字列の配列、区切り文字が含まれていない空の配列、または null

options
StringSplitOptions

部分文字列をトリミングして空の部分文字列を含めるかどうかを指定する列挙値のビットごとの組み合わせ。

戻り値

String[]

この文字列を、separator 配列のいずれかまたは複数の要素 (文字列) で区切ることによって取り出された部分文字列を格納する配列。 詳細については、「解説」を参照してください。

属性

例外

optionsStringSplitOptions 値のいずれでもありません。

次の例は、 と と等しいパラメーターを持つ文字列の メソッドを呼び出すことによって返される配列 String.Split(String[], StringSplitOptions) options の違いを示 StringSplitOptions.None しています StringSplitOptions.RemoveEmptyEntries

string source = "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]";
string[] stringSeparators = new string[] { "[stop]" };
string[] result;

// Display the original string and delimiter string.
Console.WriteLine($"Splitting the string:\n   \"{source}\".");
Console.WriteLine();
Console.WriteLine($"Using the delimiter string:\n   \"{stringSeparators[0]}\"");
Console.WriteLine();

// Split a string delimited by another string and return all elements.
result = source.Split(stringSeparators, StringSplitOptions.None);
Console.WriteLine($"Result including all elements ({result.Length} elements):");
Console.Write("   ");
foreach (string s in result)
{
    Console.Write("'{0}' ", String.IsNullOrEmpty(s) ? "<>" : s);
}
Console.WriteLine();
Console.WriteLine();

// Split delimited by another string and return all non-empty elements.
result = source.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine($"Result including non-empty elements ({result.Length} elements):");
Console.Write("   ");
foreach (string s in result)
{
    Console.Write("'{0}' ", String.IsNullOrEmpty(s) ? "<>" : s);
}
Console.WriteLine();

// The example displays the following output:
//    Splitting the string:
//       "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]".
//    
//    Using the delimiter string:
//       "[stop]"
//    
//    Result including all elements (9 elements):
//       '<>' 'ONE' '<>' 'TWO' '<>' '<>' 'THREE' '<>' '<>'
//    
//    Result including non-empty elements (3 elements):
//       'ONE' 'TWO' 'THREE'
Dim source As String = "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]"
Dim stringSeparators() As String = {"[stop]"}
Dim result() As String

' Display the original string and delimiter string.
Console.WriteLine("Splitting the string:{0}   '{1}'.", vbCrLf, source)
Console.WriteLine()
Console.WriteLine("Using the delimiter string:{0}   '{1}'.",
                vbCrLf, stringSeparators(0))
Console.WriteLine()

' Split a string delimited by another string and return all elements.
result = source.Split(stringSeparators, StringSplitOptions.None)
Console.WriteLine("Result including all elements ({0} elements):",
                result.Length)
Console.Write("   ")
For Each s As String In result
    Console.Write("'{0}' ", IIf(String.IsNullOrEmpty(s), "<>", s))
Next
Console.WriteLine()
Console.WriteLine()

' Split delimited by another string and return all non-empty elements.
result = source.Split(stringSeparators,
                    StringSplitOptions.RemoveEmptyEntries)
Console.WriteLine("Result including non-empty elements ({0} elements):",
                result.Length)
Console.Write("   ")
For Each s As String In result
    Console.Write("'{0}' ", IIf(String.IsNullOrEmpty(s), "<>", s))
Next
Console.WriteLine()

' The example displays the following output:
'    Splitting the string:
'       "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]".
'    
'    Using the delimiter string:
'       "[stop]"
'    
'    Result including all elements (9 elements):
'       '<>' 'ONE' '<>' 'TWO' '<>' '<>' 'THREE' '<>' '<>'
'    
'    Result including non-empty elements (3 elements):
'       'ONE' 'TWO' 'THREE'

次の例では、区切り記号と空白文字を含む区切り記号の配列を定義します。 この配列を の値と共に メソッドに渡す場合、文字列の個々の単語で構成 StringSplitOptions.RemoveEmptyEntries Split(String[], StringSplitOptions) される配列が返されます。

string[] separators = { ",", ".", "!", "?", ";", ":", " " };
string value = "The handsome, energetic, young dog was playing with his smaller, more lethargic litter mate.";
string[] words = value.Split(separators, StringSplitOptions.RemoveEmptyEntries);
foreach (var word in words)
    Console.WriteLine(word);

// The example displays the following output:
//       The
//       handsome
//       energetic
//       young
//       dog
//       was
//       playing
//       with
//       his
//       smaller
//       more
//       lethargic
//       litter
//       mate
    Dim separators() As String = {",", ".", "!", "?", ";", ":", " "}
    Dim value As String = "The handsome, energetic, young dog was playing with his smaller, more lethargic litter mate."
    Dim words() As String = value.Split(separators, StringSplitOptions.RemoveEmptyEntries)
    For Each word In words
        Console.WriteLine(word)
    Next
End Sub

' The example displays the following output:
'
'       The
'       handsome
'       energetic
'       young
'       dog
'       was
'       playing
'       with
'       his
'       smaller
'       more
'       lethargic
'       litter
'       mate

メソッドは、 引数を に設定して呼 options び出されます StringSplitOptions.RemoveEmptyEntries 。 これにより、返される配列に、句読点と空白文字の間の空の部分文字列の一致を表す値を String.Empty 含めることはできません。

注釈

文字列が既知の文字列のセットで区切られている場合は、 メソッドを使用して部分 Split 文字列に分割できます。

区切り記号文字列は、返される配列の要素には含まれません。 たとえば、配列に文字列 "--" が含まれている場合、現在の文字列インスタンスの値が separator "aa--bb--cc" の場合、メソッドは "aa"、"bb"、および "cc" の 3 つの要素を含む配列を返します。

このインスタンスに に文字列が含まれている場合、返される配列は、このインスタンスを含む 1 つの separator 要素で構成されます。

パラメーターが options で、 RemoveEmptyEntries このインスタンスの長さが 0 の場合、メソッドは空の配列を返します。

の各要素 separator は、1 つ以上の文字で構成される個別の区切り記号を定義します。 引数が で、2 つの区切り記号が隣接している場合、またはこのインスタンスの先頭または末尾に区切り記号が見つかった場合、対応する配列要素には options None が含されます String.Empty 。 たとえば、"-" と " という 2 つの要素が含まれる場合、文字列インスタンスの値は separator _ "- _ aa- "、引数の値は で、 メソッドは次の 5 つの要素を持つ文字列配列 _ options None を返します。

  1. String.Emptyインデックス 0 の "-" 部分文字列の前にある空の文字列を表す 。

  2. String.Emptyインデックス 0 の "-" 部分文字列とインデックス 1 の "_" 部分文字列の間の空の文字列を表す 。

  3. "aa"

  4. String.Empty:インデックス 4 の "-" 部分文字列の後に続く空の文字列を表します。

  5. String.Emptyインデックス 5 の "_" 部分文字列の後に続く空の文字列を表す 。

区切り記号配列

内の要素が複数の文字 separator で構成されている場合、部分文字列全体が区切り記号と見なされます。 たとえば、 の要素の 1 つが "10" の場合、文字列 separator "This10is10a10string" を分割します。 は、 { "This", "is", "a", "string" という 4 要素の配列を返します。 }.

パラメーターが または空でない文字列を含む場合、空白文字は区切 separator null り記号と見なされます。 空白文字は Unicode 標準で定義され、渡された場合、 メソッドは Char.IsWhiteSpace true を返します。

パラメーターに を渡す場合は、 などの他のオーバーロードからの呼び出しをあいまいにするために、 の型を指定 null string[] separator null する必要があります Split(Char[], StringSplitOptions) 。 次の例は、このオーバーロードを明確に識別するいくつかの方法を示しています。

string phrase = "The quick  brown fox";

_ = phrase.Split(default(string[]), StringSplitOptions.RemoveEmptyEntries);

_ = phrase.Split((string[])null, StringSplitOptions.RemoveEmptyEntries);

_ = phrase.Split(null as string[], StringSplitOptions.RemoveEmptyEntries);
Dim phrase As String = "The quick brown fox"
Dim words() As String

words = phrase.Split(TryCast(Nothing, String()),
                       StringSplitOptions.RemoveEmptyEntries)

words = phrase.Split(New String() {},
                     StringSplitOptions.RemoveEmptyEntries)

比較の詳細

メソッドは、パラメーター内の 1 つ以上の文字列で区切られたこの文字列内の部分文字列を抽出し、それらの部分文字列を配列の要素として Split separator 返します。

メソッドは、大文字と小文字を区別する序数の並べ替え規則を使用して比較を実行することで、区切 Split り記号を検索します。 単語、文字列、序数の並べ替えの詳細については、 列挙型に関するページを参照 System.Globalization.CompareOptions してください。

メソッド Split は、値が または空の文字列 ("") を持つ の要素 separator null を無視します。

内の文字列に共通の文字がある場合のあいまいな結果を回避するために、操作は インスタンスの値の先頭から末尾に進み、インスタンス内の区切り記号と等しい 内の最初の要素と一致 separator します。 Split separator インスタンスで部分文字列が検出される順序は、 の要素の順序よりも優先されます separator

たとえば、値が "abcdef" のインスタンスを考え出します。 の最初の要素が "ef" で、2 番目の要素が "bcde" の場合、分割操作の結果は、"a" と "f" の 2 つの要素を含む文字列 separator 配列になります。 これは、インスタンス "bcde" 内の部分文字列が検出され、部分文字列 "f" が検出される前に 内の要素と一致 separator する可能性があります。

ただし、 の最初の要素が "bcd" で、2 番目の要素が "bc" の場合、分割操作の結果は、"a" と "ef" という 2 つの要素を含む文字列 separator 配列になります。 これは、"bcd" が インスタンス内の区切り記号と一致する の最初の separator 区切り記号だからです。 区切り記号の順序が反転され、最初の要素が "bc" で、2 番目の要素が "bcd" の場合、結果は "a" と "def" の 2 つの要素を含む文字列配列になります。

パフォーマンスに関する考慮事項

メソッド Split は、返された配列オブジェクトにメモリを割り当て、配列 String 要素ごとに オブジェクトを割り当てる。 アプリケーションで最適なパフォーマンスが必要な場合、またはアプリケーションでメモリ割り当ての管理が重要な場合は、 メソッドまたは メソッド、および必要に応じて メソッドを使用して、文字列内の部分文字列を検索します IndexOf IndexOfAny Compare

区切り文字で文字列を分割する場合は、 メソッドまたは メソッドを使用して、文字列内の区切り文字 IndexOf IndexOfAny を検索します。 区切り文字列で文字列を分割する場合は、 メソッドまたは メソッドを使用して、区切り記号文字列の最初の IndexOf IndexOfAny 文字を検索します。 次に、 メソッドを使用して、その最初の文字の後の文字が区切り記号文字列の残りの文字と等 Compare しいかどうかを判断します。

さらに、同じ文字セットを使用して複数のメソッド呼び出しで文字列を分割する場合は、1 つの配列を作成し、各メソッド呼び出しで参照 Split することもできます。 これにより、各メソッド呼び出しの追加のオーバーヘッドが大幅に削減されます。

注意 (呼び出し元)

.NET Framework 3.5 以前のバージョンでは、 メソッドに が渡された場合、または文字が含まれている場合、メソッドは文字列をトリミングする場合と少し異なる空白文字のセットを使用して文字列を分割します。 Split(Char[]) separator null Trim(Char[]) 4 .NET Frameworkでは、両方のメソッドで Unicode 空白文字の同じセットが使用されます。

適用対象

Split(String, Int32, StringSplitOptions)

指定された 1 つの区切り文字列およびオプション (任意) に基づいて文字列を最大数の部分文字列に分割します。

public string[] Split (string? separator, int count, StringSplitOptions options = System.StringSplitOptions.None);
public string[] Split (string separator, int count, StringSplitOptions options = System.StringSplitOptions.None);
member this.Split : string * int * StringSplitOptions -> string[]
Public Function Split (separator As String, count As Integer, Optional options As StringSplitOptions = System.StringSplitOptions.None) As String()

パラメーター

separator
String

このインスタンス内の部分文字列を区切る文字列。

count
Int32

配列に必要な要素の最大数。

options
StringSplitOptions

部分文字列をトリミングして空の部分文字列を含めるかどうかを指定する列挙値のビットごとの組み合わせ。

戻り値

String[]

separator で区切られた、このインスタンスの最大 count の部分文字列を格納する配列。

注釈

文字列が既に1回分割されていて count も、文字列の末尾に到達していない場合、返された配列の最後の文字列には、このインスタンスの残りの末尾の部分文字列が含まれます。

適用対象

Split(Char[], StringSplitOptions)

指定された区切り文字およびオプションに基づいて文字列を部分文字列に分割します。

public:
 cli::array <System::String ^> ^ Split(cli::array <char> ^ separator, StringSplitOptions options);
public string[] Split (char[] separator, StringSplitOptions options);
public string[] Split (char[]? separator, StringSplitOptions options);
[System.Runtime.InteropServices.ComVisible(false)]
public string[] Split (char[] separator, StringSplitOptions options);
member this.Split : char[] * StringSplitOptions -> string[]
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.Split : char[] * StringSplitOptions -> string[]
Public Function Split (separator As Char(), options As StringSplitOptions) As String()

パラメーター

separator
Char[]

この文字列から部分文字列を取り出すために区切り文字として使用する文字の配列、区切り文字が含まれていない空の配列、または null

options
StringSplitOptions

部分文字列をトリミングして空の部分文字列を含めるかどうかを指定する列挙値のビットごとの組み合わせ。

戻り値

String[]

この文字列を、separator 配列のいずれかまたは複数の要素 (文字) で区切ることによって取り出された部分文字列を格納する配列。 詳細については、「解説」を参照してください。

属性

例外

optionsStringSplitOptions 値のいずれでもありません。

次の例では、 列挙 StringSplitOptions を使用して、 メソッドによって生成された部分文字列を含めるか除外 Split します。

// This example demonstrates the String.Split(Char[], Boolean) and 
//                               String.Split(Char[], Int32, Boolean) methods
using namespace System;
void Show( array<String^>^entries )
{
   Console::WriteLine( "The return value contains these {0} elements:", entries->Length );
   System::Collections::IEnumerator^ myEnum = entries->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      String^ entry = safe_cast<String^>(myEnum->Current);
      Console::Write( "<{0}>", entry );
   }

   Console::Write( "{0}{0}", Environment::NewLine );
}

int main()
{
   String^ s = ",one,,,two,,,,,three,,";
   array<Char>^sep = gcnew array<Char>{
      ','
   };
   array<String^>^result;
   
   //
   Console::WriteLine( "The original string is \"{0}\".", s );
   Console::WriteLine( "The separation character is '{0}'.", sep[ 0 ] );
   Console::WriteLine();
   
   //
   Console::WriteLine( "Split the string and return all elements:" );
   result = s->Split( sep, StringSplitOptions::None );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return all non-empty elements:" );
   result = s->Split( sep, StringSplitOptions::RemoveEmptyEntries );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return 2 elements:" );
   result = s->Split( sep, 2, StringSplitOptions::None );
   Show( result );
   
   //
   Console::WriteLine( "Split the string and return 2 non-empty elements:" );
   result = s->Split( sep, 2, StringSplitOptions::RemoveEmptyEntries );
   Show( result );
}

/*
This example produces the following results:

The original string is ",one,,,two,,,,,three,,".
The separation character is ','.

Split the string and return all elements:
The return value contains these 12 elements:
<><one><><><two><><><><><three><><>

Split the string and return all non-empty elements:
The return value contains these 3 elements:
<one><two><three>

Split the string and return 2 elements:
The return value contains these 2 elements:
<><one,,,two,,,,,three,,>

Split the string and return 2 non-empty elements:
The return value contains these 2 elements:
<one><,,two,,,,,three,,>

*/
// This example demonstrates the String.Split() methods that use
// the StringSplitOptions enumeration.
string s1 = ",ONE,,TWO,,,THREE,,";
string s2 = "[stop]" +
            "ONE[stop][stop]" +
            "TWO[stop][stop][stop]" +
            "THREE[stop][stop]";
char[] charSeparators = new char[] { ',' };
string[] stringSeparators = new string[] { "[stop]" };
string[] result;
// ------------------------------------------------------------------------------
// Split a string delimited by characters.
// ------------------------------------------------------------------------------
Console.WriteLine("1) Split a string delimited by characters:\n");

// Display the original string and delimiter characters.
Console.WriteLine($"1a) The original string is \"{s1}\".");
Console.WriteLine($"The delimiter character is '{charSeparators[0]}'.\n");

// Split a string delimited by characters and return all elements.
Console.WriteLine("1b) Split a string delimited by characters and " +
                  "return all elements:");
result = s1.Split(charSeparators, StringSplitOptions.None);
Show(result);

// Split a string delimited by characters and return all non-empty elements.
Console.WriteLine("1c) Split a string delimited by characters and " +
                  "return all non-empty elements:");
result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries);
Show(result);

// Split the original string into the string and empty string before the
// delimiter and the remainder of the original string after the delimiter.
Console.WriteLine("1d) Split a string delimited by characters and " +
                  "return 2 elements:");
result = s1.Split(charSeparators, 2, StringSplitOptions.None);
Show(result);

// Split the original string into the string after the delimiter and the
// remainder of the original string after the delimiter.
Console.WriteLine("1e) Split a string delimited by characters and " +
                  "return 2 non-empty elements:");
result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries);
Show(result);

// ------------------------------------------------------------------------------
// Split a string delimited by another string.
// ------------------------------------------------------------------------------
Console.WriteLine("2) Split a string delimited by another string:\n");

// Display the original string and delimiter string.
Console.WriteLine($"2a) The original string is \"{s2}\".");
Console.WriteLine($"The delimiter string is \"{stringSeparators[0]}\".\n");

// Split a string delimited by another string and return all elements.
Console.WriteLine("2b) Split a string delimited by another string and " +
                  "return all elements:");
result = s2.Split(stringSeparators, StringSplitOptions.None);
Show(result);

// Split the original string at the delimiter and return all non-empty elements.
Console.WriteLine("2c) Split a string delimited by another string and " +
                  "return all non-empty elements:");
result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries);
Show(result);

// Split the original string into the empty string before the
// delimiter and the remainder of the original string after the delimiter.
Console.WriteLine("2d) Split a string delimited by another string and " +
                  "return 2 elements:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.None);
Show(result);

// Split the original string into the string after the delimiter and the
// remainder of the original string after the delimiter.
Console.WriteLine("2e) Split a string delimited by another string and " +
                  "return 2 non-empty elements:");
result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries);
Show(result);

// Display the array of separated strings using a local function
void Show(string[] entries)
{
    Console.WriteLine($"The return value contains these {entries.Length} elements:");
    foreach (string entry in entries)
    {
        Console.Write($"<{entry}>");
    }
    Console.Write("\n\n");
}

/*
This example produces the following results:

1) Split a string delimited by characters:

1a) The original string is ",ONE,,TWO,,,THREE,,".
The delimiter character is ','.

1b) Split a string delimited by characters and return all elements:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>

1c) Split a string delimited by characters and return all non-empty elements:
The return value contains these 3 elements:
<ONE><TWO><THREE>

1d) Split a string delimited by characters and return 2 elements:
The return value contains these 2 elements:
<><ONE,,TWO,,,THREE,,>

1e) Split a string delimited by characters and return 2 non-empty elements:
The return value contains these 2 elements:
<ONE><TWO,,,THREE,,>

2) Split a string delimited by another string:

2a) The original string is "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]".
The delimiter string is "[stop]".

2b) Split a string delimited by another string and return all elements:
The return value contains these 9 elements:
<><ONE><><TWO><><><THREE><><>

2c) Split a string delimited by another string and return all non-empty elements:
The return value contains these 3 elements:
<ONE><TWO><THREE>

2d) Split a string delimited by another string and return 2 elements:
The return value contains these 2 elements:
<><ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]>

2e) Split a string delimited by another string and return 2 non-empty elements:
The return value contains these 2 elements:
<ONE><TWO[stop][stop][stop]THREE[stop][stop]>

*/
    Dim s1 As String = ",ONE,,TWO,,,THREE,,"
    Dim s2 As String = "[stop]" &
                       "ONE[stop][stop]" &
                       "TWO[stop][stop][stop]" &
                       "THREE[stop][stop]"
    Dim charSeparators() As Char = {","c}
    Dim stringSeparators() As String = {"[stop]"}
    Dim result() As String
    ' ------------------------------------------------------------------------------
    ' Split a string delimited by characters.
    ' ------------------------------------------------------------------------------
    Console.WriteLine("1) Split a string delimited by characters:" & vbCrLf)

    ' Display the original string and delimiter characters.
    Console.WriteLine("1a) The original string is ""{0}"".", s1)
    Console.WriteLine("The delimiter character is '{0}'." & vbCrLf, charSeparators(0))

    ' Split a string delimited by characters and return all elements.
    Console.WriteLine("1b) Split a string delimited by characters and " &
                      "return all elements:")
    result = s1.Split(charSeparators, StringSplitOptions.None)
    Show(result)

    ' Split a string delimited by characters and return all non-empty elements.
    Console.WriteLine("1c) Split a string delimited by characters and " &
                      "return all non-empty elements:")
    result = s1.Split(charSeparators, StringSplitOptions.RemoveEmptyEntries)
    Show(result)

    ' Split the original string into the string and empty string before the 
    ' delimiter and the remainder of the original string after the delimiter.
    Console.WriteLine("1d) Split a string delimited by characters and " &
                      "return 2 elements:")
    result = s1.Split(charSeparators, 2, StringSplitOptions.None)
    Show(result)

    ' Split the original string into the string after the delimiter and the 
    ' remainder of the original string after the delimiter.
    Console.WriteLine("1e) Split a string delimited by characters and " &
                      "return 2 non-empty elements:")
    result = s1.Split(charSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
    Show(result)

    ' ------------------------------------------------------------------------------
    ' Split a string delimited by another string.
    ' ------------------------------------------------------------------------------
    Console.WriteLine("2) Split a string delimited by another string:" & vbCrLf)

    ' Display the original string and delimiter string.
    Console.WriteLine("2a) The original string is ""{0}"".", s2)
    Console.WriteLine("The delimiter string is ""{0}""." & vbCrLf, stringSeparators(0))

    ' Split a string delimited by another string and return all elements.
    Console.WriteLine("2b) Split a string delimited by another string and " &
                      "return all elements:")
    result = s2.Split(stringSeparators, StringSplitOptions.None)
    Show(result)

    ' Split the original string at the delimiter and return all non-empty elements.
    Console.WriteLine("2c) Split a string delimited by another string and " &
                      "return all non-empty elements:")
    result = s2.Split(stringSeparators, StringSplitOptions.RemoveEmptyEntries)
    Show(result)

    ' Split the original string into the empty string before the 
    ' delimiter and the remainder of the original string after the delimiter.
    Console.WriteLine("2d) Split a string delimited by another string and " &
                      "return 2 elements:")
    result = s2.Split(stringSeparators, 2, StringSplitOptions.None)
    Show(result)

    ' Split the original string into the string after the delimiter and the 
    ' remainder of the original string after the delimiter.
    Console.WriteLine("2e) Split a string delimited by another string and " &
                      "return 2 non-empty elements:")
    result = s2.Split(stringSeparators, 2, StringSplitOptions.RemoveEmptyEntries)
    Show(result)

End Sub


' Display the array of separated strings.
Public Shared Sub Show(ByVal entries() As String)
    Console.WriteLine("The return value contains these {0} elements:", entries.Length)
    Dim entry As String
    For Each entry In entries
        Console.Write("<{0}>", entry)
    Next entry
    Console.Write(vbCrLf & vbCrLf)

End Sub

'This example produces the following results:
'
'1) Split a string delimited by characters:
'
'1a) The original string is ",ONE,,TWO,,,THREE,,".
'The delimiter character is ','.
'
'1b) Split a string delimited by characters and return all elements:
'The return value contains these 9 elements:
'<><ONE><><TWO><><><THREE><><>
'
'1c) Split a string delimited by characters and return all non-empty elements:
'The return value contains these 3 elements:
'<ONE><TWO><THREE>
'
'1d) Split a string delimited by characters and return 2 elements:
'The return value contains these 2 elements:
'<><ONE,,TWO,,,THREE,,>
'
'1e) Split a string delimited by characters and return 2 non-empty elements:
'The return value contains these 2 elements:
'<ONE><TWO,,,THREE,,>
'
'2) Split a string delimited by another string:
'
'2a) The original string is "[stop]ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]".
'The delimiter string is "[stop]".
'
'2b) Split a string delimited by another string and return all elements:
'The return value contains these 9 elements:
'<><ONE><><TWO><><><THREE><><>
'
'2c) Split a string delimited by another string and return all non-empty elements:
'The return value contains these 3 elements:
'<ONE><TWO><THREE>
'
'2d) Split a string delimited by another string and return 2 elements:
'The return value contains these 2 elements:
'<><ONE[stop][stop]TWO[stop][stop][stop]THREE[stop][stop]>
'
'2e) Split a string delimited by another string and return 2 non-empty elements:
'The return value contains these 2 elements:
'<ONE><TWO[stop][stop][stop]THREE[stop][stop]>
'

注釈

区切り文字 (配列内の文字 separator ) は、返される配列の要素には含まれません。 たとえば、 separator 配列に文字 "-" が含まれていて、現在の文字列インスタンスの値が "aa-bb-cc" である場合、メソッドは、"aa"、"bb"、および "cc" の3つの要素を含む配列を返します。

このインスタンスに内のいずれの文字も含まれていない場合 separator 、返される配列は、このインスタンスを格納する1つの要素で構成されます。

optionsパラメーターがで、 RemoveEmptyEntries このインスタンスの長さがゼロの場合、メソッドは空の配列を返します。

の各要素 separator は、1つの文字で構成される個別の区切り記号を定義します。 options引数がであり、2つの区切り記号が隣接している場合 None 、またはこのインスタンスの先頭または末尾に区切り記号がある場合、対応する配列要素にはが含まれ String.Empty ます。 たとえば、に separator 2 つの要素が含まれて '-' おり、 '_' 文字列インスタンスの値が " _ -aa-" で、 _ 引数の値がである場合、 options None メソッドは次の5つの要素を持つ文字列配列を返します。

  1. String.Empty。インデックス0の "-" 文字の前にある空の文字列を表します。

  2. String.Empty。インデックス0の "-" 文字とインデックス1の "_" 文字の間の空の文字列を表します。

  3. "aa"。

  4. String.Empty。インデックス4の "-" 文字の後に続く空の文字列を表します。

  5. String.Empty。インデックス5の "_" 文字の後に続く空の文字列を表します。

区切り記号配列

separatorパラメーターがであるか、文字を含んでいない場合は null 、空白文字が区切り記号と見なされます。 空白文字は Unicode 規格によって定義され、 Char.IsWhiteSpace メソッドが true 渡された場合はを返します。

パラメーターに を渡す場合は、 などの他のオーバーロードからの呼び出しをあいまいにするために、 の型を指定 null char[] separator null する必要があります Split(String[], StringSplitOptions) 。 次の例は、このオーバーロードを明確に識別するいくつかの方法を示しています。

string phrase = "The quick  brown fox";

_ = phrase.Split(default(char[]), StringSplitOptions.RemoveEmptyEntries);

_ = phrase.Split((char[])null, StringSplitOptions.RemoveEmptyEntries);

_ = phrase.Split(null as char[], StringSplitOptions.RemoveEmptyEntries);
Dim phrase As String = "The quick brown fox"
Dim words() As String

words = phrase.Split(TryCast(Nothing, Char()),
                       StringSplitOptions.RemoveEmptyEntries)

words = phrase.Split(New Char() {},
                     StringSplitOptions.RemoveEmptyEntries)

比較の詳細

メソッドは、パラメーター内の 1 つ以上の文字で区切られたこの文字列内の部分文字列を抽出し、それらの部分文字列を配列の要素 Split separator として返します。

メソッドは、大文字と小文字を区別する序数の並べ替え規則を使用して比較を実行することで、区切 Split り記号を検索します。 単語、文字列、序数の並べ替えの詳細については、 列挙型に関するページを参照 System.Globalization.CompareOptions してください。

パフォーマンスに関する考慮事項

メソッド Split は、返された配列オブジェクトにメモリを割り当て、配列 String 要素ごとに オブジェクトを割り当てる。 アプリケーションで最適なパフォーマンスが必要な場合、またはアプリケーションでメモリ割り当ての管理が重要な場合は、 メソッドまたは メソッド、および必要に応じて メソッドを使用して、文字列内の部分文字列を検索します IndexOf IndexOfAny Compare

区切り文字で文字列を分割する場合は、 メソッドまたは メソッドを使用して、文字列内の区切り文字 IndexOf IndexOfAny を検索します。 区切り文字列で文字列を分割する場合は、 メソッドまたは メソッドを使用して、区切り記号文字列の最初の IndexOf IndexOfAny 文字を検索します。 次に、 メソッドを使用して、その最初の文字の後の文字が区切り記号文字列の残りの文字と等 Compare しいかどうかを判断します。

さらに、同じ文字セットを使用して複数のメソッド呼び出しで文字列を分割する場合は、1 つの配列を作成し、各メソッド呼び出しで参照 Split することもできます。 これにより、各メソッド呼び出しの追加のオーバーヘッドが大幅に削減されます。

注意 (呼び出し元)

.NET Framework 3.5 以前のバージョンでは、 メソッドに が渡された場合、または文字が含まれている場合、メソッドは文字列をトリミングする場合と少し異なる空白文字のセットを使用して文字列を分割します。 Split(Char[]) separator null Trim(Char[]) 4 .NET Frameworkでは、両方のメソッドで Unicode 空白文字の同じセットが使用されます。

適用対象

Split(Char[], Int32)

指定された区切り文字に基づいて文字列を最大数の部分文字列に分割します。

public:
 cli::array <System::String ^> ^ Split(cli::array <char> ^ separator, int count);
public string[] Split (char[] separator, int count);
public string[] Split (char[]? separator, int count);
member this.Split : char[] * int -> string[]
Public Function Split (separator As Char(), count As Integer) As String()

パラメーター

separator
Char[]

この文字列から部分文字列を取り出すために区切り文字として使用する文字の配列、区切り文字が含まれていない空の配列、または null

count
Int32

返される最大の部分文字列数。

戻り値

String[]

このインスタンスを、separator 配列のいずれかまたは複数の要素 (文字) で区切ることによって取り出された部分文字列を格納する配列。 詳細については、「解説」を参照してください。

例外

count が負の値です。

次の例では、を count 使用して、によって返される文字列の数を制限する方法を示し Split ます。

string name = "Alex Johnson III";

string[] subs = name.Split(null, 2);

string firstName = subs[0];
string lastName;
if (subs.Length > 1)
{
    lastName = subs[1];
}

// firstName = "Alex"
// lastName = "Johnson III"
Console.WriteLine("What is your name?")
Dim name As String = Console.ReadLine()

Dim substrings = name.Split(Nothing, 2)
Dim firstName As String = substrings(0)
Dim lastName As String

If substrings.Length > 1 Then
    lastName = substrings(1)
End If

' If the user enters "Alex Johnson III":
' firstName = "Alex"
' lastName = "Johnson III"

注釈

区切り文字は、返される配列の要素には含まれません。

このインスタンスに内のいずれの文字も含まれていない場合 separator 、返される配列は、このインスタンスを格納する1つの要素で構成されます。 countが0の場合は、空の配列が返されます。

separatorパラメーターがであるか、文字を含んでいない場合は null 、空白文字が区切り記号と見なされます。 空白文字は Unicode 規格によって定義され、 Char.IsWhiteSpace メソッドが true 渡された場合はを返します。

の各要素 separator は、個別の区切り文字を定義します。 2つの区切り記号が隣接している場合、またはこのインスタンスの先頭または末尾に区切り記号がある場合、対応する配列要素にはが含まれ Empty ます。

このインスタンスに複数の部分文字列が含まれている場合 count 、最初の count - 1 部分文字列が戻り値の最初の要素に返され、 count - 1 このインスタンスの残りの文字が戻り値の最後の要素に返されます。

countが部分文字列の数より大きい場合は、使用可能な部分文字列が返され、例外はスローされません。

次の表は、いくつかの例を示しています。

Language 文字列値 区切り記号 返された配列
C# "42, 12, 19" 新しい Char [] {', ', ' '} {"42", "", "12", "", "19"}
Visual Basic "42, 12, 19" Char () = {"," c, "" c}) {"42", "", "12", "", "19"}
C# "42.. 12.. 19" 新しい Char [] {'} {"42"、""、"12"、""、"19"、""}
Visual Basic "42.. 12.. 19" Char () = {"."40u-c {"42"、""、"12"、""、"19"、""}
C# バナナ 新しい Char [] {'} {"バナナ"}
Visual Basic バナナ Char () = {"."40u-c {"バナナ"}
C# "Darb\nSmarba" 新しい Char [] {} {"Darb", "Smarba"}
Visual Basic "Darb" & vbLf & "Smarba" Char () = {} {"Darb", "Smarba"}
C# "Darb\nSmarba" null {"Darb", "Smarba"}
Visual Basic "Darb" & vbLf & "Smarba" なし {"Darb", "Smarba"}

パフォーマンスに関する考慮事項

メソッドは、 Split 返された配列オブジェクトにメモリを割り当て、 String 配列要素ごとにオブジェクトを割り当てます。 アプリケーションで最適なパフォーマンスが求められる場合、またはアプリケーションでメモリ割り当てを管理することが重要な場合は、メソッドまたはメソッドを使用して IndexOf IndexOfAny Compare 文字列内の部分文字列を検索することを検討してください。

文字列を区切り文字で分割する場合 IndexOf は、メソッドまたはメソッドを使用し IndexOfAny て、文字列内の区切り記号を検索します。 区切り文字列で文字列を分割する場合は、メソッドまたはメソッドを使用して、 IndexOf IndexOfAny 区切り記号文字列の最初の文字を検索します。 次に、メソッドを使用して、 Compare その最初の文字の後の文字が区切り記号文字列の残りの文字と等しいかどうかを確認します。

また、複数のメソッド呼び出しで同じ文字セットを使用して文字列を分割する場合は、 Split 1 つの配列を作成し、各メソッド呼び出しでそれを参照することを検討してください。 これにより、各メソッド呼び出しのオーバーヘッドが大幅に減少します。

注意 (呼び出し元)

.NET Framework 3.5 以前のバージョンでは、メソッドに文字が含まれていないか、または文字を含んでいないが渡された場合、メソッドは文字列をトリミングするのではなく、 Split(Char[]) separator null 少し異なる空白文字のセットを使用して文字列を分割し Trim(Char[]) ます。 .NET Framework 4 以降では、どちらのメソッドも、同じ Unicode の空白文字のセットを使用します。

こちらもご覧ください

適用対象

Split(Char, StringSplitOptions)

指定された 1 つの区切り文字およびオプション (任意) に基づいて文字列を部分文字列に分割します。

public string[] Split (char separator, StringSplitOptions options = System.StringSplitOptions.None);
member this.Split : char * StringSplitOptions -> string[]
Public Function Split (separator As Char, Optional options As StringSplitOptions = System.StringSplitOptions.None) As String()

パラメーター

separator
Char

この文字列内の部分文字列を区切る文字。

options
StringSplitOptions

部分文字列をトリミングして空の部分文字列を含めるかどうかを指定する列挙値のビットごとの組み合わせ。

戻り値

String[]

separator によって区切られた、このインスタンスの部分文字列を要素に格納する配列。

適用対象

Split(String, StringSplitOptions)

指定された文字列の区切り記号に基づいて文字列を部分文字列に分割します。

public string[] Split (string? separator, StringSplitOptions options = System.StringSplitOptions.None);
public string[] Split (string separator, StringSplitOptions options = System.StringSplitOptions.None);
member this.Split : string * StringSplitOptions -> string[]
Public Function Split (separator As String, Optional options As StringSplitOptions = System.StringSplitOptions.None) As String()

パラメーター

separator
String

この文字列内の部分文字列を区切る文字列。

options
StringSplitOptions

部分文字列をトリミングして空の部分文字列を含めるかどうかを指定する列挙値のビットごとの組み合わせ。

戻り値

String[]

separator によって区切られた、このインスタンスの部分文字列を要素に格納する配列。

適用対象

Split(Char[])

指定された区切り文字に基づいて文字列を部分文字列に分割します。

public:
 cli::array <System::String ^> ^ Split(... cli::array <char> ^ separator);
public string[] Split (params char[] separator);
public string[] Split (params char[]? separator);
member this.Split : char[] -> string[]
Public Function Split (ParamArray separator As Char()) As String()

パラメーター

separator
Char[]

区切り文字の配列、区切り文字が含まれていない空の配列、または null

戻り値

String[]

このインスタンスを separator の 1 つ以上の文字で区切った部分文字列を要素に格納する配列。 詳細については、「解説」を参照してください。

次の例では、スペース文字 ( ) とタブ文字 () を区切り記号として扱うことによって、テキストブロックから個々の単語を抽出する方法を示し \t ます。 分割される文字列には、これらの文字の両方が含まれます。

string s = "Today\tI'm going to school";
string[] subs = s.Split(' ', '\t');

foreach (var sub in subs)
{
    Console.WriteLine($"Substring: {sub}");
}

// This example produces the following output:
//
// Substring: Today
// Substring: I'm
// Substring: going
// Substring: to
// Substring: school
Dim s As String = "Today" & vbTab & "I'm going to school"
Dim subs As String() = s.Split(" "c, Char.Parse(vbTab))

For Each substring In subs
    Console.WriteLine("Substring: " & substring)
Next

' This example produces the following output:
'
' Substring: Today
' Substring: I 'm
' Substring: going
' Substring: to
' Substring: school

注釈

文字列が既知の文字のセットで区切られている場合は、メソッドを使用して、文字列を部分文字列に区切ることができ Split(Char[]) ます。

区切り文字は、返される配列の要素には含まれません。 たとえば、区切り記号配列に文字 "-" が含まれていて、現在の文字列インスタンスの値が "aa-bb-cc" の場合、メソッドは、"aa"、"bb"、および "cc" の3つの要素を含む配列を返します。

このインスタンスに内のいずれの文字も含まれていない場合 separator 、返される配列は、このインスタンスを格納する1つの要素で構成されます。

の各要素 separator は、個別の区切り文字を定義します。 2つの区切り記号が隣接している場合、またはこのインスタンスの先頭または末尾に区切り記号がある場合、返される配列内の対応する要素にはが含まれ Empty ます。

次の表は、いくつかの例を示しています。

Language 文字列値 区切り記号 返された配列
C# "42, 12, 19" 新しい Char [] {', ', ' '} {"42", "", "12", "", "19"}
Visual Basic "42, 12, 19" Char () = {"," c, "" c}) {"42", "", "12", "", "19"}
C# "42.. 12.. 19" 新しい Char [] {'} {"42"、""、"12"、""、"19"、""}
Visual Basic "42.. 12.. 19" Char () = {"."40u-c {"42"、""、"12"、""、"19"、""}
C# バナナ 新しい Char [] {'} {"バナナ"}
Visual Basic バナナ Char () = {"."40u-c {"バナナ"}
C# "Darb\nSmarba" 新しい Char [] {} {"Darb", "Smarba"}
Visual Basic "Darb" & vbLf & "Smarba" Char () = {} {"Darb", "Smarba"}
C# "Darb\nSmarba" null {"Darb", "Smarba"}
Visual Basic "Darb" & vbLf & "Smarba" なし {"Darb", "Smarba"}

区切り記号配列

Separator の各要素は、1つの文字で構成される個別の区切り記号を定義します。

separator引数がである null か、または文字を含んでいない場合、メソッドは空白文字を区切り記号として扱います。 空白文字は Unicode 規格によって定義され Char.IsWhiteSpace true ます。空白文字が渡されると、メソッドはを返します。

String. Split (Char []) とコンパイラのオーバーロードの解決

のこのオーバーロードの1つのパラメーター String.Split は文字配列ですが、次の例に示すように、1つの文字で呼び出すことができます。

string value = "This is a short string.";
char delimiter = 's';
string[] substrings = value.Split(delimiter);
foreach (var substring in substrings)
    Console.WriteLine(substring);

// The example displays the following output:
//     Thi
//      i
//      a
//     hort
//     tring.
    Dim value As String = "This is a short string."
    Dim delimiter As Char = "s"c
    Dim substrings() As String = value.Split(delimiter)
    For Each substring In substrings
        Console.WriteLine(substring)
    Next
End Sub

' The example displays the following output:
'
'     Thi
'      i
'      a
'     hort
'     tring.

パラメーターは separator 属性で修飾されているため ParamArrayAttribute 、コンパイラは1つの文字を単一要素の文字配列として解釈します。 これは、パラメーターを含む他のオーバーロードには当てはまりません String.Split separator 。これらのオーバーロードを引数として文字配列に明示的に渡す必要があり separator ます。

比較の詳細

メソッドは、 Split(Char[]) 配列内の1つ以上の文字で区切られたこの文字列の部分文字列を抽出 separator し、それらの部分文字列を配列の要素として返します。

メソッドは、 Split(Char[]) 大文字と小文字を区別する序数の並べ替え規則を使用して比較を実行することで、区切り記号を検索します。 単語、文字列、および序数の並べ替えの詳細については、列挙体を参照してください System.Globalization.CompareOptions

パフォーマンスに関する考慮事項

メソッドは、 Split 返された配列オブジェクトにメモリを割り当て、 String 配列要素ごとにオブジェクトを割り当てます。 アプリケーションで最適なパフォーマンスが求められる場合や、アプリケーションでメモリ割り当てを管理する必要がある場合は、 IndexOf メソッドまたはメソッドの使用を検討してください IndexOfAny 。 また、メソッドを使用して、 Compare 文字列内の部分文字列を検索することもできます。

文字列を区切り文字で分割するに IndexOf は、メソッドまたはメソッドを使用し IndexOfAny て、文字列内の区切り記号を検索します。 区切り文字列で文字列を分割するには、メソッドまたはメソッドを使用して、 IndexOf IndexOfAny 区切り記号文字列の最初の文字を検索します。 次に、メソッドを使用して、 Compare その最初の文字の後の文字が区切り記号文字列の残りの文字と等しいかどうかを確認します。

また、複数のメソッド呼び出しで同じ文字セットを使用して文字列を分割する場合は、 Split 1 つの配列を作成し、各メソッド呼び出しでそれを参照することを検討してください。 これにより、各メソッド呼び出しのオーバーヘッドが大幅に減少します。

注意 (呼び出し元)

.NET Framework 3.5 以前のバージョンでは、メソッドに文字が含まれていないか、または文字を含んでいないが渡された場合、メソッドは文字列をトリミングするのではなく、 Split(Char[]) separator null 少し異なる空白文字のセットを使用して文字列を分割し Trim(Char[]) ます。 .NET Framework 4 以降では、どちらのメソッドも、同じ Unicode の空白文字のセットを使用します。

こちらもご覧ください

適用対象