개발 및 연구 정보

java에서 csv 읽어 파싱 하기 (따옴표 처리 포함)

바보천사 2020. 3. 9. 13:07

public static String[] csvSplit(String str)

{

ArrayList<String> resultList = new ArrayList<>();

char charArr[] = str.toCharArray();

boolean isQuotes = false;

int start=0;

for(int i=0; i<charArr.length; i++)

{

if(charArr[i]=='\"')

{

if((i>0)&&(charArr[i-1]=='\\')) continue;

else if(isQuotes && (((i+1)==charArr.length)||(charArr[i+1]==',')))

{

resultList.add(str.substring(start+1, i));

isQuotes = false;

start = (++i)+1;

}

else isQuotes = true;

}

else if(charArr[i]==',')

{

if(!isQuotes)

{

if(start>=i) resultList.add("");

else resultList.add(str.substring(start, i));

start = i+1;

}

}

}


if(charArr.length>start) resultList.add(str.substring(start, charArr.length));

return resultList.toArray(new String[resultList.size()]);

}


단, 따옴표가 연속해서 어러개 나오는 경우에 일부가 빠짐