Visualizzazione dei risultati da 1 a 7 su 7

Discussione: aiuto su sottostringhe

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da simo9115 Visualizza il messaggio
    con il metodo tokenizer che dici?
    A questo punto vorrei essere molto chiaro, e lo ripeto, se dato un testo "blabla {prova} blabla {ciao}" tu vuoi estrarre solo (e ripeto SOLO) le parti "prova" e "ciao", allora le soluzioni sono in effetti almeno 3:

    a) Usare in ciclo indexOf per trovare gli indici di "{" e "}" e andare poi a prendere il contenuto tra le { } tramite substring.

    b) Usare le espressioni regolari, creando un Pattern che descrive genericamente una sequenza {qualcosa} e andando poi ad usare il find() di Matcher per trovare ed estrarre il contenuto tra le parentesi.

    c) Usare StringTokenizer. Va anche bene, in effetti non ci avevo pensato prima, ma in questo caso devi farti restituire non solo i token ma anche i delimitatori (che sono '{' e '}'). Altrimenti non sapresti più distinguere quali sono le parti tra le { } e quali no.


    Inoltre: se hai più righe (essendoci un file di testo in input) e la coppia { } non "spanna" su più righe, allora va bene leggere una riga per volta e ragionare solo su quella corrente e basta.

    Se invece tu avessi un file di testo:

    codice:
    Prova {ciao
    esempio} File
    di testo
    ovvero la parte tra { } inizia su una riga e finisce su un'altra, allora leggere a righe sarebbe ancora tecnicamente fattibile ma servirebbe più "logica" di analisi per estrarre la parte tra le graffe.
    Sarebbe meglio in tal caso avere tutto il testo in una unica stringa
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2015
    Messaggi
    81
    Quote Originariamente inviata da andbin Visualizza il messaggio
    ovvero la parte tra { } inizia su una riga e finisce su un'altra, allora leggere a righe sarebbe ancora tecnicamente fattibile ma servirebbe più "logica" di analisi per estrarre la parte tra le graffe.
    Sarebbe meglio in tal caso avere tutto il testo in una unica stringa
    purtroppo nel mio caso la parte tra {} inizia su una riga e finisce su un'altra(anche parecchie dopo). Questo perchè il file txt è il risultato di un processo scaturito da un altro programma...infatti come ho già detto prima mi accade che, utilizzando tokenizer, ottengo che ogni token è costituito da un pezzo di testo, cioè mi tronca prima e mi crea successivamente un altro token. il mio problema sta nel mettere insieme questi token per creare un unica stringa....

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da simo9115 Visualizza il messaggio
    purtroppo nel mio caso la parte tra {} inizia su una riga e finisce su un'altra(anche parecchie dopo). Questo perchè il file txt è il risultato di un processo scaturito da un altro programma...infatti come ho già detto prima mi accade che, utilizzando tokenizer, ottengo che ogni token è costituito da un pezzo di testo, cioè mi tronca prima e mi crea successivamente un altro token. il mio problema sta nel mettere insieme questi token per creare un unica stringa....
    Soluzione 1) Leggi tutto il testo per averlo alla fine in una unica grossa stringa (compresi newline etc). A quel punto puoi applicare facilmente una delle tecniche a/b/c dette prima a tua scelta.

    Soluzione 2) Leggi a "righe" ma serve più ragionamento e logica per trovare { e } il cui contenuto "spanna" su più righe. Nulla di impossibile ma bisogna ragionare. E la tecnica b) (singola espressione regolare) NON è praticabile.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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