C#/문자열

[C#]문자열 나누기(Split), 자르기(Substring)

DevStory 2021. 9. 12.

문자열을 분리하거나 또는 잘라야 하는 경우 Split() 메서드와 Substring() 메서드를 사용할 수 있습니다.

 

Split() 메서드는 특정 문자열을 기준으로 문자열을 구분하며, SubString() 메서드는 지정된 위치에서 지정된 수만큼 문자열을 자르는 역할을 담당합니다.

 

이번 포스팅에서는 Split() 메서드와 Substring() 메서드 사용 방법을 정리합니다.

 


Split 메서드

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 메서드

Substring() 메서드는 지정된 위치에서 지정된 수만큼 문자열을 자르는 기능을 수행합니다.

 

주로, 문자열의 위치를 찾는 IndexOf(), LastIndexOf() 메서드와 같이 사용됩니다.

 

Substring(int startIndex)

지정된 위치에서 문자열의 마지막까지 반환합니다.

string email = "hello@google.com";

int startIdx = email.IndexOf("@");

string splitStr = email.Substring(startIdx + 1); // google.com

변수 email에서 @의 위치를 찾은 뒤 @의 위치 + 1에서 마지막까지 문자열을 반환하는 예제입니다.

 

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() 메서드에 전달한 길이가 지정된 위치에서 문자열의 마지막까지 문자열의 길이를 초과하는 경우 에러가 발생합니다.

 

반응형

댓글