Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    18

    Verificare presenza stringa in intervallo di caratteri

    Ciao ragazzi,
    in attesa di andare in ferie, sto perdendo la pazienza per risolvere questo intoppo.
    Allora, leggo un file di testo e devo verificare, dopo una data stringa, che tra "" ci sia un'altra stringa e contarne i caratteri. Mi spiego meglio.
    Mio file di testo:

    "Descrizione","qui va il testo da individuare ma potrebbe essere vuoto"

    Calcolo l'indexOf della stringa "Descrizione", aggiungo 13 ed ho l'indexOf della prima virgoletta del contenuto, poi però ho problemi col verificare la lunghezza dei caratteri contenuti tra la prima e la seconda virgoletta.
    Tenete conto che dopo ho altre stringhe splittate sempre da virgolette.
    Ho individuato un percorso, ma vorrei conoscere prima le vostre impressioni.
    Grazie per l'aiuto.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,182
    Supponendo che la stringa inizi sempre con le virgolette (come da tuo esempio):

    codice:
    // La riga letta dal file
    Stnig lettaDalFile = ...;
    
    // Spezzo la stringa usando le virgolette come delimitatore
    String[] tokens = lettaDalFile.split("\"");
    
    // Stampo la lunghezza della seconda frase fra virgolette
    System.out.println( tokens[3].length() );
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    18
    Ti ringrazio, ma il problema è che ho un file di testo di circa 600 caratteri composto da n stringhe tra virgolette. In poche parole ho la label della variabile e dopo il contenuto della variabile stessa.

    "nome_variabile1","valore1","nome_variabile2","val ore2".....ecc.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,182
    Ok, potevi essere più chiaro fin da subito. Ad ogni modo il principio è sempre lo stesso.
    Ora, faccio io un passo in più e suppongo che tu voglia ottenere ciascuna coppia (chiave, valore) in questo modo:

    codice:
    nome_variabile1 -> valore1
    nome_variabile2 -> valore2
    ecc
    Allora, conviene usare un approccio diverso (dal punto di vista della leggibilità): prima spezziamo la stringa usando come delimitatore la virgola, ottenendo così un array contenente solo le stringhe che ci interessano (con le virgolette che andremo poi a togliere). Poi, in questo array avremo in posizione pari le chiavi e in posizione dispari i valori:

    codice:
    // Spezzo la stringa usando la virgola come delimitatore
    String[] tokens = lettaDalFile.split(",");
    
    // Scorro tutto l'array: in posizione pari ho le chiavi, in posizione dispari i valori
    for(int i=0; i<tokens.length; i+=2) {
       System.out.println(tokens[i].replaceAll("\"","") + " -> " + tokens[i+1].replaceAll("\"",""));
    }
    Vogliamo creare una HashMap per poter indicizzare mglio le nostre coppie? Facile:

    codice:
    HashMap<String,String> mappa = new HashMap<String,String>();
    
    for(int i=0; i<tokens.length; i+=2) {
       mappa.put(tokens[i].replaceAll("\"",""), tokens[i+1].replaceAll("\"",""));
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2005
    Messaggi
    18
    Molto chiaro.
    Grazie mille !!!
    Ora.....vacanzeeeeeeeee

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 © 2021 vBulletin Solutions, Inc. All rights reserved.