CSV 포맷(Format)의 문자열(String) 파싱(Parse, Parsing)

CSV 형태로 된 문자열을 파싱하기 위한 C#언어로 작성된 함수입니다. 예전에 XrGeocoder 프로그램을 개발할때 사용했던 함수로.. 또 다른 프로젝트에서 사용되면서 함수만을 분리해 정리해 봅니다.>/p>

private List SeperateStringWithComma(String value)
{
    bool inQuotes = false;
    char delim = ',';
    List strings = new List();

    StringBuilder sb = new StringBuilder();
    foreach (char c in value)
    {
        if (c == '\'' || c == '"')
        {
            if (!inQuotes)
                inQuotes = true;
            else
                inQuotes = false;
        }

        if (c == delim)
        {
            if (!inQuotes)
            {
                strings.Add(sb.Replace("'", string.Empty).Replace("\"", string.Empty).ToString());
                sb.Remove(0, sb.Length);
            }
            else
            {
                sb.Append(c);
            }
        }
        else
        {
            sb.Append(c);
        }
    }

    strings.Add(sb.Replace("'", string.Empty).Replace("\"", string.Empty).ToString());
    return strings;
}

위의 함수를 사용하는 예제는 다음과 같습니다.

String csv = "2011-01-01,18,2008,개인,인천,중구,~,2010-12-31,233400,남자";
List values = SeperateStringWithComma(csv);

int cntValues = values.Count;
for (int i = 0; i < cntValues; i++)
{
    MessageBox.Show(values[i]);
}

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다