본문 바로가기

Programming/CSharp

String.Split으로 토큰 단위로 파싱하기

반응형

C++에서는 strtok 계열의 함수를 사용해서 토큰 단위로 문자열을 나눌 수 있습니다.

MFC에서는 AfxExtractSubString() 함수를 통해서 문자열을 토큰 단위로 나눌 수 있습니다.

아래 링크를 클릭하면 AfxExtractSubString() 함수에 대한 내용을 확인할 수 있습니다.

2015/06/22 - [Programming/Win32&MFC&COM] - CString 토큰(Token)으로 분리시키기(AfxExtractSubString)

C#에서는 String.Split()으로 쉽게 파싱할 수 있습니다.

C#에서 String.Split으로 문자열을 파싱하는 방법입니다.

static void Main(string[] args)
{
    string text = "ABC\nDEF\tGHI JKL";
    char[] sep = { '\n', '\t', ' ' };

    string[] result = text.Split(sep);
    foreach (var item in result)
    {
        Console.WriteLine(item);
    }
}

구분자로 사용할 문자를 배열로 만들어서 전체 string의 Split()을 호출할 때 전달하면 됩니다.

결과가 string의 배열로 나오기 때문에 foreach를 통해 하나씩 사용할 수 있습니다.

각각 '\n', '\t', ' '으로 분리하기 때문에 결과가 다음과 같이 출력됩니다.

구분자를 전달했을 때 공백 문자가 있는 경우에는 공백 문자가 전부 결과에 포함되서 나옵니다.

공백 문자는 구분자가 연달아 나올 때 만들어집니다.

아래와 같이 StringSplitOptions.RemoveEmptyEntries를 사용하면 해결됩니다.

static void Main(string[] args)
{
    string text = "ABC\r\n\tDEF\r\n\tGHI\r\n\tJKL";
    char[] sep = { '\n', '\t', ' ' };

    string[] result = text.Split(sep, StringSplitOptions.RemoveEmptyEntries);
    foreach (var item in result)
    {
        Console.WriteLine(item);
    }
}

만약 StringSplitOptions.RemoveEmptyEntries를 전달하지 않으면 결과가 다르게 출력됩니다.

String.Split()으로 쉽게 문자열 파싱이 가능합니다.

반응형

'Programming > CSharp' 카테고리의 다른 글

sealed 키워드를 사용한 클래스 상속 방지  (0) 2014.12.27
C#의 Property(속성)  (0) 2014.12.26
C# 물음표 2개(??) 연산자  (0) 2014.12.25
C#의 키워드(Keywords)  (0) 2014.12.25