string.Split()으로 문자열을 특정 구분자(delimiter)로 분리하여 문자열 배열로 변환하는 방법을 소개합니다.
예를 들어, Split()은 아래 input과 같은 문자열을 ,를 구분자로 분리하여 output 배열과 같이 여러 문자열로 분리할 수 있습니다.
input: "Hello,World,C#"
output: ["Hello", "World", "C#"]1. Split(delimiter)으로 문자열 분리
string.Split(delimiter)은 문자열에서 구분자(delimiter)로 문자열을 분리하여 배열로 리턴합니다.
아래 코드는 구분자 " "와 ","로 분리하여 두개의 결과를 출력하는 예제입니다. 구분자로 분리했을 때, 문자열에 공백이 포함될 수 있습니다.
using System;
namespace Example {
public class Program {
public static void Main(string[] args) {
string str = "Hello, world, C#";
string[] result1 = str.Split(" ");
string[] result2 = str.Split(",");
Console.WriteLine("result1:");
foreach(String s in result1) {
Console.WriteLine(s);
}
Console.WriteLine("result2:");
foreach(String s in result2) {
Console.WriteLine(s);
}
}
}
}Output:
result1:
Hello,
world,
C#
result2:
Hello
world
C#만약 분리된 문자열에 공백을 제거하고 싶다면, 사용할 때 Trim()으로 앞 뒤 공백을 제거할 수 있습니다.
Console.WriteLine("result1:");
foreach(String s in result1) {
Console.WriteLine(s.Trim());
}
Console.WriteLine("result2:");
foreach(String s in result2) {
Console.WriteLine(s.Trim());
}Output:
result1:
Hello,
world,
C#
result2:
Hello
world
C#2. Split(delimiter, count)로 최대 문자열 개수 제한
Split(delimiter, count)은 구분자로 문자열을 분리하는데, 분리된 문자열 개수를 최대 count까지로 제한하는 설정입니다.
아래 예제에서
Split(" ", 1)는 분리된 문자열 개수를 1로 제한하기 때문에, 아무것도 분리하지 못하여 배열에 전체 문자열 1개만 포함됩니다.Split(",", 3)는 분리된 문자열 개수를 3으로 제한하기 때문에, 문자열을,로 2번 분리하여 생성된 3개의 문자열을 배열에 추가하고 리턴합니다.
using System;
namespace Example {
public class Program {
public static void Main(string[] args) {
string str = "Hello, world, C#, learning";
string[] result1 = str.Split(" ", 1);
string[] result2 = str.Split(",", 3);
Console.WriteLine("result1:");
foreach(String s in result1) {
Console.WriteLine(s);
}
Console.WriteLine("result2:");
foreach(String s in result2) {
Console.WriteLine(s);
}
}
}
}Output:
result1:
Hello, world, C#, learning
result2:
Hello
world
C#, learning3. 여러 delimiter로 문자열 나누기
Split(delimiters, option)는 구분자 배열을 인자로 받으며, 배열에 있는 모든 구분자로 문자열을 분리합니다.
아래 예제에서 separators 배열에 있는 3개의 구분자로 문자열을 분리하여 배열로 리턴합니다.
StringSplitOptions.None 옵션은 분리된 문자열에 빈 문자열이 포함될 수 있다는 옵션입니다.
using System;
namespace Example {
public class Program {
public static void Main(string[] args) {
string str = "Hello, world. C#! learning";
string[] separators = {",", ".", "!"};
string[] result = str.Split(separators, StringSplitOptions.None);
Console.WriteLine("result:");
foreach(String s in result) {
Console.WriteLine(s);
}
}
}
}Output:
result:
Hello
world
C#
learning4. 여러 delimiter로 문자열 나누기 + 최대 문자열 개수 제한
Split(delimiters, count, option)은 문자열을 delimiters 배열로 분리하는데, 분리된 문자열의 개수가 최대 count 개수로 제한하는 것입니다.
동작은 위에서 설명한 Split(delimiter, count)와 동일합니다.
using System;
namespace Example {
public class Program {
public static void Main(string[] args) {
string str = "Hello, world. C#! learning";
string[] separators = {",", ".", "!"};
string[] result = str.Split(separators, 3, StringSplitOptions.None);
Console.WriteLine("result:");
foreach(String s in result) {
Console.WriteLine(s);
}
}
}
}Output:
result:
Hello
world
C#
learningRelated Posts
- C# 바이트(Byte) 배열을 문자열로 변환
- C# String.format() 함수 알아보기
- C# - foreach (Array, List, Dictionary)
- C# 프로퍼티(Property) Get/Set 함수
- C# - Dictionary에서 key, value 가져오기
- C# - Dictionary 순회, foreach, for 루프
- C# - Dictionary에서 key, value 삭제
- C# - Dictionary.add()로 데이터 추가
- C# - Dictionary 선언 및 초기화
- C# - 문자열을 Double, Float으로 변환
- C# - 문자열을 리스트로 변환
- C# - 두 날짜/시간 비교, DateTime.Compare()
- C# - 날짜 문자열을 DateTime으로 변환
- C# - Sleep, 몇 초간 지연시키기
- C# - 날짜 계산, DateTime 시간 더하기 빼기
- C# - Timestamp(millisecond)를 DateTime 객체로 변환
- C# - 현재 시간 가져오기, DateTime
- C# - 문자열 리스트를 문자열로 변환
- C# - 리스트 복사 (얕은 복사, 깊은 복사)
- C# - 2차원 리스트 선언 및 초기화
- C# - 리스트 선언 및 초기화
- C# - 리스트 길이, 크기 가져오기
- C# - 리스트 합계, 평균 계산
- C# - 리스트 요소 제거 (RemoveAt, RemoveAt, RemoveAll)
- C# - 리스트에서 빈 문자열, null 제거
- C# - 리스트 두개로 분리, n개로 나누기
- C# - 문자열 뒤집기, Reverse()
- C# - 2차원 배열 복사, Clone
- C# - 문자열 배열을 문자열로 변환
- C# - 2차원 배열 선언, 초기화 방법
- C# - 배열 길이, 2차원 배열 길이
- C# - 두개의 배열을 하나로 합치기
- C# - 배열 중복 요소 제거
- C# - 배열에서 특정 요소 제거
- C# - Int 배열 정렬 (오름차순, 내림차순)