다음을 통해 공유


C#에서 String.Split을 사용하여 문자열을 분리하는 방법

String.Split 메서드는 하나 이상의 구분 기호를 기준으로 입력 문자열을 분할하여 부분 문자열 배열을 만듭니다. 이 메서드는 종종 단어 경계에서 문자열을 분리하는 가장 쉬운 방법입니다.

참고

이 문서의 C# 예제는 Try.NET 인라인 코드 러너 및 놀이터에서 실행됩니다. 대화형 창에서 예제를 실행하려면 실행 버튼을 선택합니다. 코드를 실행하면 실행을 다시 선택하여 코드를 수정하고 수정된 코드를 실행할 수 있습니다. 수정된 코드는 대화형 창에서 실행되거나, 컴파일이 실패하면 대화형 창에 모든 C# 컴파일러 오류 메시지가 표시됩니다.

팁 (조언)

AI 지원을 사용하여 GitHub Copilot를 사용하여 문자열을 분할할 수 있습니다.

문자열을 단어로 분할

다음 코드는 공통 어구를 각 단어에 대한 문자열의 배열로 나눕니다.

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

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

구분 문자의 모든 인스턴스는 반환된 배열에 값을 생성합니다. C#의 배열은 제로 인덱싱되므로 배열의 각 문자열은 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++)
{
    Console.WriteLine($"Index {i}: <{words[i]}>");
}

String.Split는 다양한 오버로드 기능을 가지고 있습니다. 이러한 오버로드는 문자열 분할 동작을 사용자 지정합니다.

  • 구분 기호를 char 값 또는 string 값으로 지정할 수 있습니다.
  • 하나의 구분 기호 또는 여러 구분 기호를 지정할 수 있습니다. 여러 구분 기호를 지정하는 경우 모두 동일한 형식(또는 charstring)이어야 합니다.
  • 반환할 최대 부분 문자열 수를 지정할 수 있습니다.
  • 반복된 구분 기호 문자가 무시되는지 여부를 지정하거나 반환 값에 빈 부분 문자열을 생성할 수 있습니다.
  • 반환된 부분 문자열에서 선행 및 후행 공백이 제거되는지 여부를 지정할 수 있습니다.

나머지 예제에서는 서로 다른 오버로드를 사용하여 이러한 각 동작을 표시합니다.

여러 구분 기호 지정

String.Split은 다중 구분 문자를 사용할 수 있습니다. 다음 예제에서는 공백, 쉼표, 마침표, 콜론 및 탭을 구분 문자로 사용하며, 해당 문자는 Split의 배열로 전달됩니다. 코드 맨 아래의 루프는 반환된 배열의 각 단어를 표시합니다.

char[] delimiterChars = [' ', ',', '.', ':', '\t'];

string text = "one\ttwo three:four,five six seven";
Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(delimiterChars);
Console.WriteLine($"{words.Length} words in text:");

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

연속되는 모든 구분 기호의 인스턴스는 출력 배열에 빈 문자열을 생성합니다.

char[] delimiterChars = [' ', ',', '.', ':', '\t'];

string text = "one\ttwo :,five six seven";
Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(delimiterChars);
Console.WriteLine($"{words.Length} words in text:");

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

String.Split은 문자열 배열(단일 문자 대신 대상 문자열을 구문 분석하는 구분 기호 역할을 하는 문자 시퀀스)을 사용할 수 있습니다.

string[] separatingStrings = ["<<", "..."];

string text = "one<<two......three<four";
Console.WriteLine($"Original text: '{text}'");

string[] words = text.Split(separatingStrings, StringSplitOptions.RemoveEmptyEntries);
Console.WriteLine($"{words.Length} substrings in text:");

foreach (var word in words)
{
    Console.WriteLine(word);
}

출력 크기 제한

다음 예제에서는 원본 문자열의 처음 네 개의 부분 문자열로 출력을 제한하는 방법을 보여 줍니다.

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

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

빈 부분 문자열 제거

연속된 구분 문자는 반환된 배열의 값으로 빈 문자열을 생성합니다. 공백 문자를 구분 기호로 사용하는 다음 예제에서 빈 문자열을 만드는 방법을 확인할 수 있습니다.

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

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

이 동작은 표 형식 데이터를 나타내는 쉼표로 구분된 값(CSV) 파일과 같은 형식을 더 쉽게 만듭니다. 연속된 쉼표는 빈 열을 나타냅니다.

반환된 배열에 빈 문자열을 제외하기 위해 선택적인 StringSplitOptions.RemoveEmptyEntries 매개 변수를 전달할 수 있습니다. 반환된 컬렉션의 더 복잡한 처리를 위해 LINQ를 사용하여 결과 시퀀스를 조작할 수 있습니다.

공백 자르기

다음 예제에서는 항목 트리밍의 효과를 보여 립니다.

string numerals = "1, 2, 3, 4, 5, 6, 7, 8, 9, 10";
string[] words = numerals.Split(',', StringSplitOptions.TrimEntries);

Console.WriteLine("Trimmed entries:");
foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}
words = numerals.Split(',', StringSplitOptions.None);
Console.WriteLine("Untrimmed entries:");
foreach (var word in words)
{
    Console.WriteLine($"<{word}>");
}

트리밍되지 않은 항목에는 숫자 앞에 추가 공백이 있습니다.

GitHub Copilot를 사용하여 문자열 분할

IDE에서 GitHub Copilot를 사용하여 C#을 사용하여 String.Split 문자열을 분할하는 코드를 생성할 수 있습니다. 요구 사항에 따라 문자열 및 구분 기호를 사용하도록 프롬프트를 사용자 지정할 수 있습니다.

다음 텍스트는 Copilot 채팅의 프롬프트 예를 보여줍니다.

Generate C# code to use Split.String to split a string into substrings.
Input string is "You win some. You lose some." Delimiters are space and period.
Provide example output.

GitHub Copilot는 AI를 통해 구동되므로 예상치 못한 실수가 발생할 수 있습니다. 자세한 내용은 부조종사 FAQ참조하세요.

Visual Studio 의 GitHub Copilot와 VS Code 의 GitHub Copilot에 대해 자세히 알아보세요.

참고 항목