PDA

View Full Version : [Visual Basic] Problema di Stringhe


lancil9
11-12-2009, 14:01
Ciao a tutti,

non son sicuro di aver aperto altri post in passato per cui intanto saluto tutti e vi ringrazio per le innumerevoli volte in cui mi siete stati d'aiuto.

Questa volta, però, non son riuscito a trovare nulla che faccia al caso mio tra i vari post.

Il mio problema è banale quanto complesso per le mie conoscenze di visual basic.

Io ho un file .txt con un testo molto lungo. Miste, in mezzo al testo, ci sono le seguenti parole:

Nome: [ giovanni ]
indirizzo: [ via pinco pallino ]

e questa struttura si ripete diverse volte nel testo, ma tra queste due righe e le successive due di nome e indirizzo ci sono tante altre parole che nn mi interessano.

Quello di cui ho bisogno è creare un nuovo documento di testo in cui è presente solo nome e indirizzo, in questo formato:

giovanni;via pinco pallino;
nome2;indirizzo2;
nome3;indirizzo3;

il risultato mi servirà per avere un mini database in excel con solo nome e via, estrapolati dal file iniziale.

Quindi ciò che ho pensato di fare è stato copiare tutto il documento in una mega stringa, controllare le parole nella stringa fino a trovare "nome" e dirgli che voglio salvare su un altro file solo il contenuto delle due parentesi [], quindi nel primo caso "giovanni".
La stessa cosa poi andrebbe fatta cercando la parola "indirizzo".
Entrambe le ricerche però non si dovranno fermare al primo risultato utile ma continuare fino a quando il file di lettura non sarò stato completamente esaminato.

Purtroppo con visual basic non sono riuscito a risolvere il problema in nessun modo.

Ovviamente non sono obbligato ad usare visual basic, posso tranquillamente usare altri linguaggi... accetto qualsiasi tipo di soluzione che riesca a rendere veloce il salvataggio dei miei dati, compresi degli script di word (se esistono).

Grazie a tutti per la vostra pazienza!

ESSE-EFFE
11-12-2009, 14:41
Purtroppo con visual basic non sono riuscito a risolvere il problema in nessun modo.

Puoi postare il codice che hai utilizzato finora per il parser?

zuper
11-12-2009, 14:50
importalo in excel...

fai testo in colonna usi come separatore [ e poi cancelli a mano nella colonna 2, che sarà quella che ti interessa, il carattere ] :)

lancil9
11-12-2009, 15:31
Puoi postare il codice che hai utilizzato finora per il parser?

non ho del vero e proprio codice, ho fatto qualche prova salvando su una singola stringa tutto il testo:

Dim leggifile As String
leggifile = my.Computer.FileSystem.ReadAllText("documento.txt")

e poi provando a usare comandi di confronto inStr, ma effettivamente oltre non riesco ad andare perchè i casi sono due, o elimino tutto tranne quello che mi serve, o tengo solo quello che mi serve...

Vi mostro uno spezzone del file di testo, che altro non è che una pagina html:

<div xmlns:pb="pb" class="client-identifying-pg fix-identifying-pb-noVV">
<h3 class="org">Scuola Elementare </h3><div class="fix-float-identifying-pg">
<address><p>
<span class="postal-code">40055</span>&nbsp;<span class="locality">Castenaso</span>
&nbsp;<span class="region">(BO)</span>
<span class="street-address">Via Nasica, 2</span></p></address>


dopo il comando <h3 class="org"> ho il nome della scuola che mi serve, e ovviamente si chiude col tag </h3>
poi ho il codice postale dopo il " <span class="postal-code"> " e mi voglio salvare solo il codice postale... lo stesso poi con locality, region e street-address.

quindi l'esempio che ho fatto prima con le parentesi quadre [] non era rappresentativo.

ESSE-EFFE
11-12-2009, 16:15
leggifile = my.Computer.FileSystem.ReadAllText("documento.txt")


Questo mi sembra VB.NET più che VB.


e poi provando a usare comandi di confronto inStr,


Può essere una strada.

Non è che ci sia molto altro da dire: devi creare un parser HTML, eventualmente utilizzando le regular expression, ma non necessariamente. La cosa non è banale, ma limitandoti alla struttura del file che ti interessa forse non è nemmeno troppo complicato. In rete trovi comunque parecchi esempi.

lancil9
11-12-2009, 16:19
In rete trovi comunque parecchi esempi.

Ahimè, di esempi ce ne sono, ma nn ne ho trovati che fanno al caso mio... non trovo un comando che mi permetta di dirgli: visualizza tutta la stringa, quando arrivi a questo tag salva tutto ciò che segue fino alla chiusura del tag, e continua così per tutte le volte che vedi quel tag...

ESSE-EFFE
11-12-2009, 16:25
Ahimè, di esempi ce ne sono, ma nn ne ho trovati che fanno al caso mio... non trovo un comando che mi permetta di dirgli: visualizza tutta la stringa, quando arrivi a questo tag salva tutto ciò che segue fino alla chiusura del tag, e continua così per tutte le volte che vedi quel tag...

E lo credo! Dicevo di prendere spunto da un parser già funzionante ed adattarlo alle tue esigenze, trovare già qualcosa di pronto per un compito così particolare è arduo.

Comunque, ripeto, puoi anche limitare il controllo al formato che ti serve e scrivere il parser da zero.

lancil9
11-12-2009, 17:04
Sembra che sia riuscito a trovare un risultato soddisfacente con uno script Perl...