Ricerca e sostituzione in file txt

lunedì 13 ottobre 2008 - 16.39

frenk17 Profilo | Junior Member

ciao ragazzi... avrei bisogno del vostro aiuto....
avendo ad es un file txt...

20/03/2008 pippo
15/03/2008 pluto
07/03/2008 paperino
20/03/2008 topolino


come faccio a ricercare tutte le riche che contengono "20/03/2008", ed effettuare un ulteriore ricerca per individuare tra le righe rimaste quelle che contengono "pippo", e sostituire "pippo" con "paperone"


grazie

alx_81 Profilo | Guru

>ciao ragazzi... avrei bisogno del vostro aiuto....
Ciao!

>come faccio a ricercare tutte le riche che contengono "20/03/2008",
>ed effettuare un ulteriore ricerca per individuare tra le righe
>rimaste quelle che contengono "pippo", e sostituire "pippo" con
>"paperone"
Ma ti serve un file di output?
In quel caso scorri il file con uno StreamReader riga per riga e per ognuna, cerchi se tra i primi N caratteri esiste la data passata. In tal caso, ti sposti sulla posizione in cui inizia la parola pippo e fai una replace. Tutti i risultati ottenuti (Righe lette e non utili alla sostituzione e righe cambiate) li metti i uno StringBuilder per poi andare a scrivere tramite uno StreamWriter su di un nuovo file.
Eccoti un po' di reference:

Classe StreamReader
http://msdn.microsoft.com/it-it/library/system.io.streamreader(VS.80).aspx

Classe StreamWriter
http://msdn.microsoft.com/en-us/library/system.io.streamwriter.aspx

Classe StringBuilder
http://msdn.microsoft.com/it-it/library/system.text.stringbuilder.aspx

>grazie
di nulla!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

frenk17 Profilo | Junior Member

ok... ti spiego comunque meglio cosa devo fare...
ho un programma che gestisce la timbratura dei dipendenti all interno di un azienda...
quando il dipendente entra al mattino e timbra avrò una sutuazione simile stampata in un file txt...

nome cognome matricola entrata_mattino uscita_pranzo entrata pranzo uscita
francesco rossi 001 8.02 -- -- --

tuttavia quando il dipendente firma per l uscita a pranzo la mia situazione deve diventare

nome cognome matricola entrata_mattino uscita_pranzo entrata pranzo uscita
francesco rossi 001 8.02 12.04 --- ---




e a fine giornata deve essere così:
nome cognome matricola entrata_mattino uscita_pranzo entrata pranzo uscita
francesco rossi 001 8.02 12.04 14.00 17.31


questo a mio avviso implica il metodo che ti ho richiesto, secondo te è il modo ottimale? se esiste un metodo più semplice dimmi pure.....
grazie

alx_81 Profilo | Guru

>questo a mio avviso implica il metodo che ti ho richiesto, secondo
>te è il modo ottimale? se esiste un metodo più semplice dimmi
Io farei così:

Innanzitutto, bisognerebbe capire come gestire gli stati. Mi inventerei o una logica di spostamento del file già concluso ed utilizzato dai processi, oppure una riga di intestazione che mi definisca se ogni momento della giornata a cui il file è stato toccato (ingresso, uscita pranzo, ingresso dopo pranzo, uscita).

Impotizziamo che tutti i file già elaborati vengano spostati a scopo di esempio.
Io creerei un file con i primi dati (poichè l'altro è stato spostato) e quindi con, ad esempio, la NOME COGNOME ORA INGRESSO e poi, ad ogni passaggio del "servizio" che vai a scrivere, leggerei il contenuto del file (magari pensando ad un separatore che divida le colonne) in una mia classe (quella che definisce il tracciato completo). Poi lavorerei sull'aggiunta di dati direttamente sulla classe, passando poi la stessa ad un metodo che scorre la collezione dei dati letti e produce, riga per riga, il file.

Quindi ti serve:
- sapere il massimo dei campi che ti servono
- scrivere la classe che ha n proprietà, una per ogni colonna del file
- definire regole di separazione dei valori nel file
- leggere i dati da file con un metodo che "splitti" la riga in colonne
- creare una classe madre che altro non è che una collezione di tue classi
- aggiungere un elemento alla collezione, riga per riga
- definire un metodo OutputToTxt che ti produca, in base al momento della giornata (specifiche a me ignote per ora) ti produca il file dalla collezione.

>grazie
di nulla!

Se vuoi una mano, passo passo scriviamo le classi..
magari dimmi che libertà hai sul file da produrre/leggere.. e quali sono le specifiche..
Perchè tu non indichi i part time, il fatto che una persona entri al pomeriggio, ecc..

Ciao!
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

paperinik4 Profilo | Newbie

Ciao,

Mi servirebbe na mano con visual basic e sql. Il problema è il seguente. Ho diversi dvd di backup li vorrei archiviare. Mi hanno consigliato, di adoperare il seguente comando del vecchio dos. Ossia, digitando dir > nomefile.txt si crea il nomefile con estensione txt, tutto il contenuto della cartella del dvd. Ora, con questi dati sotto forma di testo, come posso effettuare na ricerca con visual basic ed sql ???? Chi mi può aiutare per favore ???? Grazie, attendo na vostra risposta al più presto.

alx_81 Profilo | Guru

>Ciao,
Dovresti aprire un nuovo thread e cercare di spiegarti meglio, perchè così non ho capito cosa devi fare.
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5