2016-10-13 3 views
0

Ich habe folgende txt-Datei, die ich brauche, mit Token zu teilen und zu einem Objekt speichern:Splitting-Token in Token-Trennzeichen in Java

1, Harry Potter, 4, 3,11,14, 20

2, Matrix, 3, 1,8,12

3, Batman, 3, 39,9,42

Struktur ist: ID, Name, Länge, movieIds

Wo Länge bezieht sich auf wie viele MovieIds gibt es.

Nicht sicher, wie movieIds separat zu teilen oder mehrere Werte für das Objekt zu setzen, wie sie sich gegenseitig überschreiben.

Scanner inputFile = new Scanner(playlistLibrary); 

     String str; 
     String[] tokens;   

     for (int i = 1; i < playlist.length; i ++) { 

      playlist[i] = new Playlist_17967352(); 

      if (inputFile.hasNext()) { 

       str = inputFile.nextLine(); 
       tokens = str.split(","); 


       for (int a = 0; a < tokens.length; a ++) { 

        playlist[i].setId(tokens[0]); 
        playlist[i].setName(tokens[1]); 
        playlist[i].setLength(tokens[2]); 

        if (tokens.length > 3) { 

        int length = Integer.parseInt(playlist[i].getLength()); 

          String movieIds;  

         for (int b = 0, c = 3 ; b < length; b++, c++) { 

          movieIds = tokens[c];         
          playlist[i].setMovies(movieIds);         
         } 

        } 

       } // end for tokens.length 

       System.out.println(playlist[i].getMovies()); 

-Code-Ausgang:

Was ich brauche, ist:

3,11,14,20

1,8,12

39,9,42

+0

Ist es im Bereich der Möglichkeiten, das Dateiformat zu aktualisieren? 1, Harry Potter, 4, "3,11,14,20" 2, Matrix, 3, "1,8,12" 3, Batman, 3, "39,9,42" – 42shadow42

+0

Sieht aus wie CSV ([Comma-Separated Values] (https://en.wikipedia.org/wiki/Comma-separated_values)) Daten, verwenden Sie also einen CSV-Parser, z [Apache Commons CSV] (http://commons.apache.org/proper/common-csv/). – Andreas

+0

@Andreas Ja, aber seine CSV-Format nicht die movieIds entweicht, so dass es nicht richtig funktioniert, wenn er die Zitate fügt – 42shadow42

Antwort

0

Sie können nur tun, eine Spaltung. Sie wissen, dass die erste Film-ID tokens[3] ist. Sie benötigen also nur einen Zähler in Ihrer Schleife und fügen dann 3 hinzu, wenn Sie tokens indizieren.

+0

Nicht sicher, ich folge, willst du die Zeile in 2 teilen? –