2012-04-15 2 views
2

기본적으로 내 문제는 이것입니다. 텍스트를 구문 분석해야하는데 ,이 구분 기호이지만 " " 따옴표의 모든 항목은 구분 기호를 검사하지 않아야합니다. 이것은 Scanner.skip 방법에 대한 것입니까? 내가 직접 확인 하겠지만 Java에서 정규식 패턴을 작성하는 방법을 이해하지 못한다. 여기서 토큰은 두 개 사이에있다. " ". 유효한 ,으로 구분 된 적절한 토큰에 인용 된 텍스트를 포함하고자합니다.따옴표 붙은 텍스트는 포함 시키지만 무시하려면 스캐너를 가져 옵니까?

+0

p 엉덩이 CSV 파일, http://sourceforge.net/projects/javacsv/ 또는 이와 유사한 CSV 라이브러리를 찾습니다. – Kennet

답변

2

얼마 전이 문제를 조사한 결과 충분히 빠른 해결책을 찾지 못했습니다. 예를 들어

QuoteAwareStringSplitter.java

:

public static void main(String[] args) throws IOException 
{ 
    String s = "ads,asdas,das,das, \"ahda,asd,as,d,a\", adsa"; 
    String[] tokens = QuoteAwareStringSplitter.splitLine(s); 
    for (String token : tokens) 
    { 
     System.out.println(token); 
    } 
} 

결과

가 나는 작동 오픈 소스 프로젝트로 (따옴표 간의 분리를 무시) 간단한 맞춤 문자열 스플리터를 포함 인쇄물 :

ads 
asdas 
das 
das 
ahda,asd,as,d,a 
adsa 
+0

나는 char를 수동으로 처리하는 방법을 포함하지 않는 방법이 있었으면 좋겠다. 그렇지만이 솔루션이 그렇게 나쁘지는 않다. – user1086516

+1

어느 시점에서 그것은 char에 의해 char이어야합니다. 'QuoteIgnorringStringSplitter'와 같은 것을 사용할 때 코드에서 추상화됩니다. – DerMike

+1

글쎄, 어떤 라이브러리 나 솔루션을 선택하든 정규 표현식 기반의 솔루션이라 할지라도 구현의 일부로'char'에 의해'char'를 통해 설정 될 것입니다. 그것은 단지 당신에게서 숨길 수 있습니다. 정규 표현식은 마법이 아닙니다 ... 편집 : @DerMike는 나를 때려칩니다. – ulmangt

관련 문제