Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [Visual C#] Filtrare File.Txt
Forum - C# / VB.NET - [Visual C#] Filtrare File.Txt - Pagina 5

Pagine: [ 1 2 3 4 5 6 7 ] Precedente | Prossimo
Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 23:16
Mercoledì, 14/11/2012
Ho una lista di nomi in un file.txt
Carico il file nella var _line
ora a me serve che il nome prenda la struttura di una email cosi':

nomelista@dominio.ext:nomelista

non mi interessa scrivere un dominio.ext vero e proprio
a me interessa piu' che altro capire la struttura della REGEX  che da un
nomelista
trasformi in
nomelista@dominio.ext:nomelista

non essendoci http://, come catturo il nome, avendo solo  @ ?


Si puo' fare?

Ciao


Ultima modifica effettuata da fusebyte il 14/11/2012 alle 23:39
PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 23:34
Mercoledì, 14/11/2012
Non mi sembra il caso di usare una regex, basta scrivere _line+"@dominio.ext:"+_line, no?

PM Quote
Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 23:43
Mercoledì, 14/11/2012
.......giusto....ma cosa sto dicendo...scusami.

Preso dalle REGEX ho fatto un ragionamento del tutto sballato.

Cmq ,Grazie ancora per l'aiuto.

Ciao

PM Quote
Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 22:26
Domenica, 25/11/2012
@Roby o Nessuno, una cortesia, nel Visual C#, usando REGEX o meno, come posso togliere parti numeriche a len variabile, iniziali o finali di una stringa ma non se il numero è contenuto dentro la stringa stessa?

es:
12111988Maria1
1988Maria1
e quindi ripulire la parte numerica a prescindere se sia data di nascita, codice progressivo o altro ed ottenere
Maria
Maria

se invece esistesse dentro la stringa una parte numerica, poterla salvare con la stringa stessa.
es:
09011973Piero1&Paolo2
1973Piero1&Paolo2
ed ottenere
Piero1&Paolo
Piero1&Paolo


Grazie Anticipate,Ciao

PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 22:54
Domenica, 25/11/2012
Secondo me (ne sono quasi certo) eiste un modo per eseguire questa operazione interamente con le regex ma adesso sul momento non mi viene....
Comunque puoi adoperare questa tecnica:
-Esegui questa regex "^[0-9]*(.*)$" e prelevi il gruppo 1 eliminando tutto il resto, devi usare il replace e mettere $1 come replace
-Ribalti la stringa, questo è semplice visto che puoi usare un array di char
-Riesegui la regex
-Ribalti nuovamente la stringa
Cosi ottieni il risultato voluto... Mi devo scervellare per trovare la regex giusta che risolva tutto in un solo passaggio :\ sono sicuro di averla gia vista....

PM Quote
Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 0:35
Lunedì, 26/11/2012
Grazie per la tua risposta.
Il problema, essendo, spesso una lista,e lavorando pochissimo su stringhe uniche, è che non so a priori se hanno inserito un numero identificativo assieme al nome o no e sopratutto che valore è stato inserito.
Ti domando,mettendo $1 varrebbe solo in questo specifico caso,credo?

Per farti un altro esempio diciamo che abbiano inserito
IDprogressivo , nome , data.nomevianumero o anno.iscrizione, es:

180Mario1970-180Rossi,viananni15a  e pulendo i dati, dovrebbe uscire

Mario-Rossi,viaNanni15a

qui il 15 è dentro la stringa, quindi lo tengo , se fosse invece

180Mario1970-Rossi.iscrizione.anno1995

il risultato sarebbe senza il 1995 perche' finale di stringa

Mario-Rossi.iscrizione.anno

spero di non avertela fatta troppo complicata.

Riassumendo un un punto solo

Carico una lista, se e solo sono presenti numeri all'inizio e/o alla fine di una o piu' parole su una linea , li vado ad eliminare, preservando eventuali numeri interni alla parola.



Quindi $1 dovrei modificarlo con un riferimento generale?  ..non so $digits ( ma non ho proprio idea di come impostare il valore di digits)

Cmq faccio due prove con quello che mi hai consigliato.

Grazie per ora:k:
Ciao:k:


ps:
Testo quotato


Ribalti la stringa, questo è semplice visto che puoi usare un array di char


Potresti farmi un esempio su come ribaltare la stringa,a dirti la verita' non ho capito bene questo punto della procedura.
Tk's

Ultima modifica effettuata da fusebyte il 26/11/2012 alle 0:52
PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 14:48
Lunedì, 26/11/2012
Facciamo che ti spiego come funziona l'algoritmo che ti ho descritto:
Partiamo da una stringa es 180Mario1970-Rossi.iscrizione.anno1995 applichiamo il replace con la regex sopra citata
questa preleverà un gruppo, in particolare quello situato immediatamente dopo i numeri all'inizio della stringa (funziona anche se non vi sono numeri all'inizio) e lo restituisce cosi otterrai Mario1970-Rossi.iscrizione.anno1995. Secondo passaggio inverti la stringa (o ribalti come preferisci) 5991onna.enoizircsi.issoR-0791oiraM. Riapplichi il primo passaggio eliminando i numeri all'inizio della stringa onna.enoizircsi.issoR-0791oiraM. A questo punto non ti resta che ribaltare di nuovo la stringa ed hai finito Mario1970-Rossi.iscrizione.anno
Qui di seguito puoi vedere un codice di esempio:
Codice sorgente - presumibilmente C# / VB.NET

  1. string stringN = "180Mario1970-Rossi.iscrizione.anno1995";
  2. stringN = System.Text.RegularExpressions.Regex.Replace(stringN, "^[0-9]*(.*)$", "$1");
  3. stringN = new string(stringN.Reverse().ToArray());
  4. stringN = System.Text.RegularExpressions.Regex.Replace(stringN, "^[0-9]*(.*)$", "$1");
  5. stringN = new string(stringN.Reverse().ToArray());


Spero di essere stato chiaro ;)

PM Quote
Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 21:56
Lunedì, 26/11/2012
Provo subito.
Devo fare piu passaggi allora, se vedi l'esempio
Testo quotato


180Mario1970-Rossi.iscrizione.anno1995

il risultato sarebbe senza il 1995 perche' finale di stringa

Mario-Rossi.iscrizione.anno


devo togliere anche il 1970 che non è dentro la parola.



Quindi
1° passaggio come hai detto
poi devo girare Mario e togliere il 1970
rimetto a posto, prendo in esame la seconda stringa e se sono presenti numeri li tolgo
rigiro la stringa , tolgo il 1995 e rimetto a posto.

Se fosse una lista sostanziosa, tutti questi passaggi potrebbero appensatire ed influire sulla velocita' di filtraggio?

Mille Grazie , Roby

Ultima modifica effettuata da fusebyte il 27/11/2012 alle 0:18
PM Quote
Pagine: [ 1 2 3 4 5 6 7 ] Precedente | Prossimo