2012-04-15 7 views
2

Grundsätzlich ist mein Problem das, ich muss Text analysieren, wobei , das Trennzeichen ist, aber alles in " " Anführungszeichen sollte nicht für ein Trennzeichen überprüft werden. Ist das, was die Scanner.skip Methode ist? Ich würde es selbst überprüfen, aber ich verstehe nicht, wie man ein Regex-Muster in Java schreibt, wo das Token etwas zwischen zwei " " ist. Ich möchte auch jeden zitierten Text in das richtige Token einschließen, das durch das gültige , begrenzt wurde.Scanner erhalten, um zitierten Text einzuschließen, aber zu ignorieren?

+0

Klingt wie Sie versuchen, p ass eine CSV-Datei, suchen Sie nach einer beliebigen CSV-Bibliothek wie http://sourceforge.net/projects/javacsv/ oder ähnlich. – Kennet

Antwort

2

Ich habe dieses Problem vor einer Weile untersucht und fand keine ausreichend schnelle Lösung.

Als Ergebnis eingebaut ich einen einfache benutzerdefinierten String-Splitter in ein Open-Source-Projekt arbeite ich an (die Trennzeichen zwischen Anführungszeichen ignoriert):

QuoteAwareStringSplitter.java

Zum Beispiel:

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); 
    } 
} 

Drucke:

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

Ich hatte gehofft, es gab einen Weg, dies zu tun, der Char Char Char nicht manuell gehen, aber wenn es ist, denke ich, dass eine Lösung wie diese nicht so schlecht ist. – user1086516

+1

Irgendwann muss es Char von Char sein. Und es wird von Ihrem Code abstrahiert, wenn Sie etwas wie "QuoteIgnorringStringSplitter" verwenden. – DerMike

+1

Nun, was auch immer für eine Bibliothek oder Lösung, die Sie wählen, auch eine Lösung, die auf regulären Ausdrücken basiert, wird durch 'char' durch' char' als Teil der Implementierung gesetzt. Es wird nur vor dir verborgen sein. Reguläre Ausdrücke sind keine Zauberei ... Edit: @DerMike schlug mich dazu :) – ulmangt

Verwandte Themen