정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

String.Split 메서드 (String[], StringSplitOptions)

지정된 문자열 배열의 요소로 구분된 이 문자열의 부분 문자열이 들어 있는 문자열 배열을 반환합니다. 매개 변수는 빈 배열 요소를 반환할지 여부를 지정합니다.

네임스페이스:  System
어셈블리:  mscorlib(mscorlib.dll)

[ComVisibleAttribute(false)]
public string[] Split(
	string[] separator,
	StringSplitOptions options
)

매개 변수

separator
형식: System.String[]
이 문자열의 부분 문자열을 구분하는 단일 문자 문자열, 구분 기호를 포함하지 않는 빈 배열, 또는 null입니다.
options
형식: System.StringSplitOptions
반환된 배열에서 빈 배열 요소를 생략하려면 RemoveEmptyEntries이고, 반환된 배열에 빈 배열 요소를 포함하려면 None입니다.

반환 값

형식: System.String[]
해당 요소에 separator에 있는 하나 이상의 문자열로 구분되는 이 문자열의 부분 문자열이 포함된 배열입니다. 자세한 내용은 설명 단원을 참조하십시오.

예외조건
ArgumentException

optionsStringSplitOptions 값 중 하나가 아닌 경우

반환 값 정보

구분 기호 문자열은 반환된 배열의 요소에 포함되지 않습니다.

이 인스턴스가 separator의 문자열을 포함하지 않으면 반환된 배열은 이 인스턴스를 포함하는 단일 요소로 구성됩니다. separator 매개 변수가 null이거나 문자를 포함하지 않으면 공백 문자를 구분 기호로 간주합니다. 공백 문자는 유니코드 표준으로 정의되며 Char.IsWhiteSpace 메서드에 전달되는 경우 true를 반환합니다. 그러나 이 메서드 오버로드를 호출하는 separator 매개 변수가 null인 경우 컴파일러 오버로드 확인에 실패합니다. 호출된 메서드를 명확하게 식별하려면 코드는 null의 형식을 나타내야 합니다. 다음 예제에서는 이 오버로드를 명확하게 식별하는 여러 가지 방법을 보여줍니다.


string phrase = "The quick  brown fox";
string[] words;

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

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

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


options 매개 변수가 RemoveEmptyEntries이고 이 인스턴스의 길이가 0이면 빈 배열이 반환됩니다.

separator의 각 요소는 하나 이상의 문자로 구성되는 별도 구분 기호를 정의합니다. options 매개 변수가 None이고 두 개의 구분 기호가 인접해 있거나 구분 기호가 이 인스턴스의 시작 위치나 끝 위치에 있으면 해당 배열 요소에 Empty가 포함됩니다.

구분 기호 배열

만일 separator 에서 요소들이 단일 문자보다 많이 구성되어있는 경우, 오직 요소의 첫 번째 문자가 결정자로 간주되고 다른 나머지 후속 문자들은 무시됩니다. 예를 들어, 만일 separator 에서 요소들 중에 하나가 "10" 이라면, "This10is10a10string." 이라는 문자열을 분할하는 것은 다음 4개의 요소 배열을 반환합니다:{ "This", "0is", "0a", "0string." }.

비교 정보

Split 메서드는 separator 매개 변수에 있는 하나 이상의 문자열로 구분되는 이 문자열에서 부분 문자열을 추출하고 이 부분 문자열을 배열 요소로 반환합니다.

Split 메서드는 대/소문자 구분 서수 정렬 규칙을 통해 비교를 수행하여 구분 기호를 검색합니다. 단어, 문자열 및 서수 정렬에 대한 자세한 내용은 System.Globalization.CompareOptions 열거형을 참조하십시오.

Split 메서드는 해당 값이 null이거나 빈 문자열("")인 separator의 요소를 무시합니다.

separator의 문자열에 공통적인 문자가 있는 경우 결과가 모호해지는 것을 방지하기 위해 Split 연산에서는 인스턴스 값의 처음부터 끝까지 처리하고 인스턴스의 구분 기호와 동일한 separator의 첫 번째 요소를 일치시킵니다. 인스턴스에서 부분 문자열이 나타나는 순서는 separator에 있는 요소의 순서보다 우선합니다.

예를 들어, 해당 값이 "abcdef"인 인스턴스가 있다고 가정할 경우 separator의 첫 번째 요소가 "ef"이고 두 번째 요소가 "bcde"이면 분할 연산의 결과는 "a" 및 "f"가 됩니다. 이는 부분 문자열 "f"가 나타나기 전에 인스턴스의 부분 문자열인 "bcde"가 나타나고 separator의 요소와 일치하기 때문입니다.

그러나 separator의 첫 번째 요소가 "bcd"이고 두 번째 요소가 "bc"이면 분할 연산의 결과는 "a" 및 "ef"가 됩니다. 이는 "bcd"가 인스턴스의 구분 기호와 일치하는 separator의 첫 번째 구분 기호이기 때문입니다. 구분 기호의 순서가 거꾸로 되어 첫 번째 요소가 "bc"이고 두 번째 요소가 "bcd"이면 결과는 "a" 및 "def"가 됩니다.

성능 고려 사항

Split 메서드는 반환되는 배열 개체 및 각 배열 요소의 String 개체에 메모리를 할당합니다. 응용 프로그램에 최적의 성능이 필요하거나 응용 프로그램에서 메모리 할당 관리가 중요한 경우에는 IndexOf 또는 IndexOfAny 메서드와 선택적으로 Compare 메서드를 사용하여 문자열 내에서 부분 문자열을 찾는 것이 좋습니다.

문자열이 구분 문자로 분할되어 있으면 IndexOf 또는 IndexOfAny 메서드를 사용하여 문자열에서 구분 문자를 찾습니다. 문자열이 구분 문자열로 분할되어 있으면 IndexOf 또는 IndexOfAny 메서드를 사용하여 구분 문자열의 첫 번째 문자를 찾습니다. 그런 다음 Compare 메서드를 사용하여 첫 번째 문자 다음의 문자가 구분 문자열의 나머지 문자와 같은지 확인합니다.

또한 같은 문자 집합이 여러 Split 메서드 호출에서 문자열을 분리하는 데 사용되는 경우 단일 배열을 만들고 각 메서드 호출에서 이를 참조하는 것이 좋습니다. 이렇게 하면 각 메서드 호출의 추가적인 오버헤드가 크게 줄어듭니다.

호출자 참고 사항

.NET Framework 3.5 및 이전 버전에서 Split 메서드가 nullseparator를 전달하거나 문자열이 포함되지 않은 경우 메서드는 Trim 메서드가 문자열을 트리밍하는 것과 약간 다른 문자 집합을 사용하여 문자열을 분할합니다. .NET Framework 4에서 두 메서드 모두 유니코드 공백 문자의 동일한 집합을 사용합니다.

다음 예제에서는 options 매개 변수를 StringSplitOptions.NoneStringSplitOptions.RemoveEmptyEntries로 설정하여 문자열의 String.Split(String[], StringSplitOptions) 메서드를 호출할 때 반환되는 배열의 차이점을 보여 줍니다.


using System;

class Example 
{
   public static void Main() 
   {
      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   \"{0}\".", source);
      Console.WriteLine();
      Console.WriteLine("Using the delimiter string:\n   \"{0}\"", 
                        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("   ");
      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 ({0} elements):", 
                        result.Length);
      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'


다음 예제는 공백 문자와 구둣점을 포함한 구분기호의 배열을 정의합니다. Split(String[], StringSplitOptions) 메서드로 StringSplitOptions.RemoveEmptyEntries 의 값을 통해 이 배열을 전달하는 것은 문자열로부터 각각의 단어로 구성된 배열을 반환합니다.


using System;

public class Example
{
   public static void Main()
   {
      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


이 메서드는 options 인수를 StringSplitOptions.RemoveEmptyEntries 로 설정하여 호출됩니다. 이것은 구둣점과 공백문자간의 빈 하위 문자열을 일치시키는 String.Empty 를 포함하는 반환된 배열을 막습니다.

.NET Framework

4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0에서 지원

.NET Framework Client Profile

4, 3.5 SP1에서 지원

이식 가능한 클래스 라이브러리

이식 가능한 클래스 라이브러리에서 지원

Windows 스토어 앱용 .NET

Windows 8에서 지원

Windows Phone 앱용 .NET

Windows Phone 8, Silverlight 8.1에서 지원

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(서버 코어 역할은 지원되지 않음), Windows Server 2008 R2(서버 코어 역할은 SP1 이상에서 지원, Itanium은 지원되지 않음)

.NET Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

커뮤니티 추가 항목

표시:
© 2014 Microsoft