Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    14

    estrarre riga intera fda file csv

    ciao a tutti grazie a questo sito al libro che ho comprato ho risolto molte lacune che avevo, adesso sono giunto davanti ad un muro il mio obbiettivo è estrarre una riga intera in base alla parola inserita dall'utente in un file csv

    esempio io ho questa riga


    codice:
    Riparata;02/07/2014 – 20:41:13;Tapis;Endex;DCMD66;910070001B;1005;Motore non partiva finale in corto.;

    in base al seriale ---> 910070001B

    vorrei che il programma mi stampasse la riga intera senza il punto e virgola, per adesso sono riuscito solo a scansionare tutti il file....

    posto la porzione di codice


    codice:
    if(leggiMenuRip == 3){
                                        Scanner scanner = new Scanner(new File("Riparazione.csv"));
                                         scanner.useDelimiter(";");
                                         System.out.print("Inserire il Seriale: ");
                                         String serialeDaCercare = leggi.readLine();
                                         while (scanner.hasNext())
                                         {
                                                 //codice per stampare la riga???
    
                                                if(se il seriale non è trovato stampa tutto)
                                                   System.out.print(scanner.next() + " ");
                                          }
                                          scanner.close();
    }

    avete qualche idea per caso?

    grazie mille a tutti in anticipo
    Ultima modifica di LeleFT; 07-07-2014 a 12:58 Motivo: Aggiunti i tag CODE

  2. #2
    Per rimpiazzare i caratteri puoi usare il comodo metodo replace della classe String.


    String bar = "ciao a te";
    bar.replace("te", "tutti");
    String.out.println( bar ); // Stamperà ciao a tutti

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    14
    mmm no, forse non mi sono spiegato bene
    non riesco a trovare la riga la riga corrispondente in base alla stringa messa dall'utente esempio io metto

    910070001B

    e il programma dovrebbe cercare nel file Riparazione.csv la riga

    Riparata;02/07/2014 – 20:41:13;Tapis;Endex;DCMD66;910070001B;1005;Motore non partiva finale in corto.;

    io sono solo riuscito a scannerizzare tutti il file e stampanre il tutto senza i separatori ";" cioè cosi

    Riparata 02/07/2014 – 20:41:13 Tapis Endex DCMD66 910070001B 1005 Motore non partiva finale in corto.

    spero di essermi spiegato bene

    grazie per avermi risposto

  4. #4
    Se è questo che vuoi ottenere allora ti dico come avrei fatto io:

    codice:
    String idToFind = "910070001B"; 
            int colIndex = 5; // index della colonna degli ID del file partendo a contare da 0. 
            
            try {
                BufferedReader csvBuffered = new BufferedReader(new FileReader( "/home/andrea/Riparazione.csv" ));
                
                String line;
                
                /* Scorro ogni linea del File
                 */
                while( ( line = csvBuffered.readLine() )!=null ){
                    
                    /*
                     * Tokenizzo la linea per poterla analizzare 
                     */
                    String[] tokens = line.split( "\\;" );
                    
                    /*
                     * Se la variabile tokens non è null
                     * Se l'id che cerco nella variabile tokens non è null
                     * Se l'id da trovare è ugule a quello nella variabile tokens
                     * 
                     */
                    if( null!=tokens && null!=tokens[ colIndex ] && tokens[ colIndex ].equals( idToFind ) ){
                        
                        System.out.println( line );
                        break; // appena trovo la linea desiderata concludo il ciclo
                    }
                    
                }
                
                csvBuffered.close();
            
            } catch (FileNotFoundException e) {
                
                e.printStackTrace();
                
            }catch( IOException e ){
                
                e.printStackTrace();
                
            }
    Ciao ciao

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da luca120 Visualizza il messaggio
    esempio io ho questa riga

    Riparata;02/07/2014 – 20:41:13;Tapis;Endex;DCMD66;910070001B;1005;Motore non partiva finale in corto.;

    in base al seriale ---> 910070001B

    vorrei che il programma mi stampasse la riga intera senza il punto e virgola
    Leggi il file "a righe" (hasNextLine()/nextLine() di Scanner o readLine() di un BufferedReader), per ogni riga la spezzi nei singoli valori usando ad esempio uno split(";") ed ottieni un array. Se il valore all'indice x è quello che cerchi, puoi stampare i valori della riga (con ciclo for) mettendo in mezzo uno spazio.
    È proprio tutto qui ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    14
    Quote Originariamente inviata da cataDesign Visualizza il messaggio
    Se è questo che vuoi ottenere allora ti dico come avrei fatto io:

    codice:
    String idToFind = "910070001B"; 
            int colIndex = 5; // index della colonna degli ID del file partendo a contare da 0. 
            
            try {
                BufferedReader csvBuffered = new BufferedReader(new FileReader( "/home/andrea/Riparazione.csv" ));
                
                String line;
                
                /* Scorro ogni linea del File
                 */
                while( ( line = csvBuffered.readLine() )!=null ){
                    
                    /*
                     * Tokenizzo la linea per poterla analizzare 
                     */
                    String[] tokens = line.split( "\\;" );
                    
                    /*
                     * Se la variabile tokens non è null
                     * Se l'id che cerco nella variabile tokens non è null
                     * Se l'id da trovare è ugule a quello nella variabile tokens
                     * 
                     */
                    if( null!=tokens && null!=tokens[ colIndex ] && tokens[ colIndex ].equals( idToFind ) ){
                        
                        System.out.println( line );
                        break; // appena trovo la linea desiderata concludo il ciclo
                    }
                    
                }
                
                csvBuffered.close();
            
            } catch (FileNotFoundException e) {
                
                e.printStackTrace();
                
            }catch( IOException e ){
                
                e.printStackTrace();
                
            }
    Ciao ciao

    grazie mille ecco perchè scleravo io consideravo solo le righe (file file di testo) e non le colonne....
    grazie mille

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    scusate, non ho considerato il "peso" di questa operazione, ma
    codice:
      String idToFind ="910070001B"; 
      int colIndex =5;// index della colonna degli ID del file partendo a contare da 0. 
      BufferedReader csvBuffered = null; 
        try{
            csvBuffered =newBufferedReader(newFileReader("/home/andrea/Riparazione.csv"));
            String line;
            while(( line = csvBuffered.readLine())!=null){
                    
              if (line.contains(idToFind){
                     System.out.println("Line " + line); 
                    break;
              }
      
        }catch(FileNotFoundException e){
          e.printStackTrace();
        }catch(IOException e ){
          e.printStackTrace();
        }finally {
          if (csvBuffered != null){
            try{  
              csvBuffered.close();
            }catch(Exception e) {}
        }
    
    
    non è più diretto?
    se non vuole i ";" può usare un "replaceAlL"
    RTFM Read That F*** Manual!!!

  8. #8
    Non credo sia corretto perchè in questo caso se l'utente scrivesse nei commenti (ultima colonna del file CSV) l' ID di qualche altra riparazione in questo caso andrebbe a prendere la riparazione scorrettà

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    e hai ragione pure tu, ma io farei una considerazione: ha senso mettere il seriale nel campo note di un altro record?
    non ha molto senso creare un array di stringhe che molto spesso butti via, al max se puoi fixare il formato del csv metti il codice all'inizio e usi startsWith....cioè io non creerei un array di stringhe ad ogni giro che butto via ad ogni giro
    RTFM Read That F*** Manual!!!

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    14
    io go modificato il codice di cataDesign cosi ma in minimo!!

    codice:
    int colIndex = 5; // index della colonna degli ID del file partendo a contare da 0.
                                     System.out.print("Inserisci il seriale da cercare: ");
                                      String idToFind = leggi.readLine();  
                                      boolean esci = true;
                                        try {
                                            do{
                                                BufferedReader csvBuffered = new BufferedReader(new FileReader( "Riparazione.csv" ));
                                                String line;
                                                while( ( line = csvBuffered.readLine() )!=null ){
                                                    String[] tokens = line.split( ";" );
                                                    if( null!=tokens && null!=tokens[ colIndex ] && tokens[ colIndex ].equals( idToFind ) ){
                                                        System.out.println( line.replace(";"," ") );
                                                        break; // appena trovo la linea desiderata concludo il ciclo
                                                    }
                                                
                                                }
                                                csvBuffered.close();
                                                System.out.print("Eseguire un altra ricerca? S/N: ");
                                                String scelta = leggi.readLine();
                                                if(scelta.equals("S")||scelta.equals("s"))
                                                    esci = true;
                                                else
                                                    esci = false;
                                            }while(esci);
                                            menuRiparazione();
                                            } catch (FileNotFoundException e) {
                                            
                                                e.printStackTrace();
                                            
                                            }catch( IOException e ){
                                            
                                                e.printStackTrace();
                                            
                                            }
    Ultima modifica di LeleFT; 08-07-2014 a 13:23

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.