Split 메서드
문자열을 특정 문자 또는 문자열을 기준으로 분리한다.
분리된 문자열은 배열로 반환되며, 전화번호에서 '-'를 기준으로 문자열을 분리하거나 이메일에서 '@'를 기준으로 문자열을 분리하는 경우 사용할 수 있다.
string phoneNumber = "010-1234-5678";
string[] phoneNumberSplit = phoneNumber.Split("-");
foreach(string splitNumber in phoneNumberSplit)
{
Console.WriteLine(splitNumber);
}
"-"을 기준으로 문자열을 분리하였으며, 분리된 문자열은 배열로 반환한다.
즉, 배열 phoneNumberSplit에는 [ "010", "1234", "5678" ]이 할당된다.
Split 메서드 오버로드
Split() 메서드는 사용 방법이 매우 다양하다.
보통 문자열(String) 기준으로 분리하지만, 문자열 배열(String []), 문자(Char), 문자 배열(Char [])을 기준으로 분리할 수 있다.
그리고 반환되는 문자열의 개수(배열의 크기)와, 빈 문자열도 반환할 것인지 설정할 수 있다.
Split(string[] separator, StringSplitOptions options)
구분자를 한개가 아니라 문자열 배열을 전달하여 여러 개 설정할 수 있다.
StringSplitOptions 열거형은 구분자 기준으로 문자열을 잘랐을때, 빈 문자열 반환 여부다.
필드 | 설명 |
None | 빈 문자열도 포함. |
RemoveEmptyEntries | 빈 문자열은 미포함. |
string[] splitStr = { "-", "." };
string phoneNumber = "010-1234..5678";
string[] phoneNumberSplit = phoneNumber.Split(splitStr, StringSplitOptions.RemoveEmptyEntries);
foreach (string splitNumber in phoneNumberSplit)
{
Console.WriteLine(splitNumber);
}
위 코드에서 StringSplitOptions의 옵션을 None으로 설정하는 경우 공백도 반환한다.
Split(string[] separator, int count, StringSplitOptions options)
문자열 배열을 전달하여 구분자를 여러 개 설정할 수 있으며, 반환되는 배열의 크기를 설정할 수 있다.
string[] splitStr = { "-", "." };
string phoneNumber = "010-1234..5678";
string[] phoneNumberSplit = phoneNumber.Split(splitStr, 2, StringSplitOptions.RemoveEmptyEntries);
foreach (string splitNumber in phoneNumberSplit)
{
Console.WriteLine(splitNumber);
}
문자열 1234..5678도 분리 가능하지만, 배열의 크기를 벗어나므로 더 이상 분리되지 않는다.
문자열 배열뿐만 아니라 문자열도 위 방법처럼 배열의 크기와 공백 여부를 설정할 수 있다.
Substring 메서드
지정된 위치에서 지정된 수만큼 문자열을 추출하는 기능을 수행한다.
주로, 문자열의 위치를 찾는 IndexOf(), LastIndexOf() 메서드와 같이 사용된다.
Substring(int startIndex)
지정된 위치에서 문자열의 마지막까지 반환한다.
string email = "hello@google.com";
int startIdx = email.IndexOf("@");
string splitStr = email.Substring(startIdx + 1); // google.com
Substring(int startIndex, int length)
지정된 위치(startIndex)에서 문자열의 길이(length)만큼 문자열을 반환한다.
string date = "20210912";
string year = date.Substring(0, 4); // 2021
string month = date.Substring(4, 2); // 09
string day = date.Substring(6, 2); // 12
위 코드처럼 날짜가 YYYYMMDD 형식으로 설정된 문자열에서 년도, 월, 일을 추출해야 하는 경우 사용할 수 있다.
Substring() 메서드에 전달한 길이가 지정된 위치에서 문자열의 마지막까지 문자열의 길이를 초과하는 경우 에러가 발생한다.
'프로그래밍 언어 > C#' 카테고리의 다른 글
C# Equals, ==, ReferenceEquals 비교 (0) | 2023.06.14 |
---|---|
C# 복사본 만들기 (0) | 2023.06.13 |
C# 문자열 공백 기준으로 분할 (0) | 2023.06.13 |
C# _ Discard (변수 무시) (0) | 2023.06.07 |
C# 오버플로우(Overflow), 언더플로우(Underflow) (0) | 2023.05.21 |