Newsgroup: it.comp.lang.visual-basic
Titolo: Parsing di un file HTML

Ciao,
dovrei realizzare una cosa semplicissima, un programmino che riceve in
input un file HTML costituito da una semplice tabella in cui sono
contenuti dei nomi.
Vorrei avere in output la stessa tabella, ma con i nomi mascherati da
degli asterischi.
in sostanza si tratta di rilevare per esempio il nome 'Rossi' nella
seguente riga e sostituirlo con '*****' :
<td bgcolor="#99CCFF"><font size="1" face="Verdana">Rossi</font></td>
con Linux e qualche  comando da consolle sarebbe lavoro di un secondo,
ma in VB non so da dove iniziare...
Qualcuno puň darmi una mano?
grazie mille e buona serata!

 Qualcuno può darmi una mano?
umm umm prima idea che mi viene in mente :
'leggi la riga
Line input #myFreefile, temp
la scorri fino al primo "<TD"  e cerchi anche "</td>" cosi da avere le due
posizioni di sInizio e sFine
che rappresentano l'estremo inizio della stringa e l'estrema fine oltre la
quale non puoi andare
"</td>" si puo' trovare anche nelle linee successive quindi se la instr
ritorna un valore non valido vuol dire che e' cosi
if trovato then
    scorri da sInizio fino al primo ">" controlli immediatamente dopo se
c'e' un altro "<" altrimenti  , se c'e' continui a cercare il prossimo ">"
fino a trovarlo o fino alla fine della riga , se lo trovi e dopo non c'e' un
altro "<" vuol dire che li' inizia il tuo testo da convertire fino al
prossimo "<" poi continui riazzerando sInizio e sFine
2° idea , sempre con lo stesso metodo accetti solo quello che si trova tra
"<" e ">" il resto lo converti in asterischi !
Logicamente tieni conto sempre dei Tag Table Tr e Td e tieni conto che deve
rimanere HML semplice
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 <td bgcolor="#99CCFF"><font size="1" face="Verdana">Rossi</font></td>
cut
SE e ripeto SE e ancora SE la riga è così e non ci sono a capo.....e il font
è sempre Verdana.....
leggi la riga e mettila in una var (ad es. START$)
per cercare come ti hanno detto usa Instr
se cerchi "Verdana">  ti trova la posizione di inizio
.... mettila in una var (in realtà... ma fallo tu...la posizione sarà
all'inizio di quello che cerchi ....quindi il nome comincia alla posizione
che trova la instr + quanto è lungo quello che cerchi...+1 ...ma sperimenta
un po da te!) ad es. InizioNome%
se cerchi  "</font" ti trova la posizione dove finisce.... mettila in una
var...(qui mi sai che dovrai fare ..."quello che trova"-1") ad es. FineNome%
hai l'inizio e la fine del nome in 2 var.....
con 2 mid$ o left$ o right$...prendi tutta la stringa memorizzata meno la
parte del nome e le metti in due var (ad esempio parte1$ e parte2$)
ora non resta che fare
stringaOscurata$= parte1$ & " ********" & parte2$
ta dah fatto!
OT!
Non son molte righe neanche in VB.....
io te l'ho fatta semplice con le var di spiegazione....una volta che l'hai
capito lo puoi comprimere mettendo una istruzione dentro l'altra!
....occhio che linux è forte ma non è la panacea a tutto....a priori!

 ...
Me lo fai un esempio?
-> GbC
http://www.gbcweb.com

 Me lo fai un esempio?
Umhhh!!!... mi sembra di leggere un po di ironia in questa domanda,
per cui ti dico solo:
'man gawk'
'man sed'
o al limite 'man cut' dato che il formato delle linee è standard.
Vorrei solo chiarire che non intendevo trolleggiare sulle presunte
capacità di Linux in rapporto ai software di Microsoft, altrimenti non
avrei chiesto un aiuto in questo NG.
Semplicemente non ho mai usato Visual Basic e devo semplicemente
effettuare una modifica ad un file HTML in modalità batch prima di
fare l'uplodad con FTP sul sito web e non conoscendo linguaggi di
scripting per Windows come Python, oppure gli equivalenti Unix da
consolle, mi sono orientato sul visualbasic per semplicità.
senza rancore, sono il primo a dire che bisogna prendere il meglio dai
due sistemi operativi senza incapponirsi sull'uno o sull'altro.
Anzi se avessi un sistema RAD come VB su Linux ne sarei felice, se poi
utilizzasse python al posto del Basic sarei addirittura entusiasta!
Kilyx non mi piace, non ho mai legato con i linguaggi Pascal-like :-(
ciao a tutti.

 <td bgcolor="#99CCFF"><font size="1" face="Verdana">Rossi</font></td>
Apri il tuo file come Open For Input, leggi una riga per volta con Line
Input e dai ciascuna riga in pasto a questa funzione:
Private Function NascondiNome(ByVal sRigaHtml As String) As String
   Dim lLunghezzaNome As Long
   Dim lPosizioneStringaPrimaDelNome As Long
   Const KStringaFine = "</font></td>"
   Const KStringaPrimaDelNome = "face=""Verdana"">"
   NascondiNome = sRigaHtml
   If LCase$(Right$(sRigaHtml, Len(KStringaFine))) = KStringaFine Then
      lPosizioneStringaPrimaDelNome = InStr(sRigaHtml, KStringaPrimaDelNome)
+_
             Len(KStringaPrimaDelNome)
      lLunghezzaNome = Len(sRigaHtml) - Len(KStringaFine) - _
             lPosizioneStringaPrimaDelNome + 1
      Mid$(sRigaHtml, lPosizioneStringaPrimaDelNome, lLunghezzaNome) = _
             String$(lLunghezzaNome, "*")
      NascondiNome = sRigaHtml
   End If
End Function
Poi riscrivila in un file (che avrai aperto come Open For Output) con
l'istruzione Print#
Ovviamente funziona se la struttura della tua riga è esattamente quella che
hai descritto (cambia solo il nominativo). Più rendi lungo il contenuto
delle due costanti, meno possibilità di modificare per errore altre parti
dell'HTML ci sono.
Ciao
*Roby*

No no, nessuna polemica.
Grazie per la risposta.
-> GbC
http://www.gbcweb.com

Grazie a tutti ragazzi...
grazie a voi ho risolto un mio piccolo problemino e cosa ancora più
importante ho imparato qualcosa di nuovo !
grazie a tutti e buona serata!!!