나는 ","구분 기호로 내 csv를 분할하기 위해 scanner.delimiter를 사용하고 있습니다. 그러나 저는 "Monsters, Inc."와 같은 데이터에 쉼표가 포함 된 데이터가 있습니다.Java에서 CSV 데이터의 쉼표를 처리하는 방법
그러나 구분 기호를 "\", \ ""로 설정하면 다른 모든 항목에서 충돌이 발생합니다.
내 자신의 scanner.delimiter 방법을 쓰지 않아도되는 아이디어?
나는 ","구분 기호로 내 csv를 분할하기 위해 scanner.delimiter를 사용하고 있습니다. 그러나 저는 "Monsters, Inc."와 같은 데이터에 쉼표가 포함 된 데이터가 있습니다.Java에서 CSV 데이터의 쉼표를 처리하는 방법
그러나 구분 기호를 "\", \ ""로 설정하면 다른 모든 항목에서 충돌이 발생합니다.
내 자신의 scanner.delimiter 방법을 쓰지 않아도되는 아이디어?
나는이 문제에 대해 scanner.delimiter가 작동하지 않는다고 생각합니다. 여분의 혼수 상태가있는 데이터에 따옴표가있는 경우 유사 답변/질문에서 언급 한 것처럼 String.split을 사용하여 이러한 종류의 문제를 해결하기 위해 정규 표현식이나 코드를 사용할 수 있습니다. 견적이 없으면 할 수있는 일이 정말로 없습니다.
비슷한 예제가 stackoverflow에 있습니다. 예를 들어 나는이 일이 당신에게 적용 생각 :
Splitting a csv file with quotes as text-delimiter using String.split()
사용자 지정 코드를 사용하여 분할
public static void main(String[] args) {
String s = "Sachin,,M,\"Maths,Science,English\",Need to improve in these subjects.";
String[] splitted = s.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
System.out.println(Arrays.toString(splitted));
}
사용
public static ArrayList<String> customSplitSpecific(String s)
{
ArrayList<String> words = new ArrayList<String>();
boolean notInsideComma = true;
int start =0, end=0;
for(int i=0; i<s.length()-1; i++)
{
if(s.charAt(i)==',' && notInsideComma)
{
words.add(s.substring(start,i));
start = i+1;
}
else if(s.charAt(i)=='"')
notInsideComma=!notInsideComma;
}
words.add(s.substring(start));
return words;
}
다른 질문의 대답을 복사하지 말고 주석을 달아 복제본임을 나타냅니다. –
고마워, 그냥 그랬어! –
많은 기존의 CSV 파서 lib 디렉토리가 있습니다. 하나를 사용해야합니다. –
가능한 복제본 [String.split()을 사용하여 텍스트 구분 기호로 따옴표로 csv 파일 나누기] (http://stackoverflow.com/questions/15738918/splitting-a-csv-file-with-quotes-as-text -delimiter-using-string-split) –