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:
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.codice:Prova {ciao esempio} File di testo
Sarebbe meglio in tal caso avere tutto il testo in una unica stringa


Rispondi quotando