Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    9

    lettura righe intorno a riga selezionata file txt

    Ciao a tutti

    Ho un problema nella lettura di un file txt : data una particolare riga del file dovrei trovare quelle che lo precedono. Mi spiego meglio: ad esempio, ho un testo del genere:

    "<tag>
    ...
    </tag>

    <tag>
    ...
    riga cercata
    ...
    </tag>

    <tag>
    ...
    </tag>"

    La riga la trovo facilmente con il comando contains(string) da BufferedReader , però poi devo trovare tutto il resto contenuto tra i tag (il nome del tag è uguale per tutti i nodi!).

    Come potrei fare, SENZA contare le righe del file (è un file che ne contiene un bel po')?

    Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    o cerchi di sfruttare un xml parser a tuo vantaggio o carichi tutto e ti fermi appena vedi la riga cercata.
    Riguardo la prima soluzione guarda bene le API
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    9
    Il fatto è che dovrei leggere questo file come file txt e non file xml (il che mi renderebbe la vita più facile )

    Ciò che vorrei "dire" al programma è: cerca quella particolare riga (e fin lì ci sono) e quelle che la precedono/succedono all'interno di quei determinati tag. Ho pensato ad una solutione del tipo "StrinUtils.substringbetween(file, <tag>, riga), ma non ottengo risultati ( a meno di considerare "null" come risultato ). Penso che il problema stia nel fatto che più nodi sono contenuti all'interno di taga con lo stesso nome, ma non so come risolverlo

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    un algoritmo (per me non tanto bello) che potrebbe aiutarti è il seguente:

    1. trova la riga cercata (via via memorizzi il file all'interno di una opportuna struttura dinamica)
    2. torna indietro finché non trovi il primo tag (quello apertura)
    3. vai avanti finché non trovi il tag di chiusura
    4. seleziona quello che c'è in mezzo tra i due indici

    algoritmo performante? per niente, senza un xml parser è l'unica opzione che hai
    RTFM Read That F*** Manual!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    9
    E' più o meno quello che avevo cercato di fare utilizzato StringUtils.substringbetween, senza risultati!

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    guarda qui

    prova a fare al contrario, una ricerca del tuo tag e vedi se il contenuto coincide con il tuo termine di paragone.
    RTFM Read That F*** Manual!!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    9
    Questa è una buonissima idea, non ci avevo pensato Grazie mille!

    Ora proverò con questa strada, anche se già importando la parte di codice

    "String[] tds = StringUtils.substringsBetween(testHtml, "<td>", "</td>");
    for (String td : tds) {
    System.out.println("td value:" + td); // good
    }"

    vi segnalo che ci sono già problemi "incompatible types
    required: java.lang.String[]
    found: java.lang.String"

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    controlla i valori di ritorno, io il sample non l'ho provato, ma vedendelo mi è venuta l'idea
    RTFM Read That F*** Manual!!!

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    9
    Trovato l'errore. Mancava la "s" che contraddistingue l'array di String dal semplice String. Errore di svista

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.