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 6

Pagine: [ 1 2 3 4 5 6 7 ] Precedente | Prossimo
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 22:28
Lunedì, 26/11/2012
Primo, non dare troppo peso alla velocità, un errore che commetevo speso era sottovalutare la macchina ma sembra che tutti i pc tengano tranquillamente migliaia di operazioni in meno di un secondo XD beh qui si sparano un po dei numeri a caso ma il concetto dovrebbe essere chiaro.
Secondo, in mezzo alle parole, è una definizione che una macchina non puo raggiungere da sola, metre per una persona è una cosa semplicissima una macchina deve cercare tra una libreira di stringhe per determinare cosa è una parola e cosa no, non ha il buonsenso ad aiutarla. Quindi o trovi un modo preciso di definire quando va tolto un numero o siamo bloccati.

PM Quote
Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 14:18
Martedì, 27/11/2012
Detto in parole "umane", se il numero è fra 2 lettere skip e prosegui.

Se [0-9] è fra 2 [A-Z] then skip the number
   else
  continua

..mi vergogno pure a scriverlo cosi'ma l'umilta' a volte premia, diciamo potrebbe essere la condizione giusta?
Conosco le REGEX per quel poco che mi hai fatto vedere e per quel poco che ho provato,potresti aiutarmi
a scrivere la REGEX...nel modo corretto..,

considerado" - " come un divisore e prendere
89Mary89 come un gruppo e
89Mary89-56M4ia56 come 2 gruppi

Forse cosi' se ne puo' venire fuori?


Ciao Roby:asd:

PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 14:52
Martedì, 27/11/2012
Oh mamma ma posso chiedere perche ti serve fare tutto questo XD qui c'è da spararsi ahahahah, a questo punto mi sa che diventa piu semplice tornare al metodo del cursore. A mio parere analizzare lettera per lettera è la scelta migliore a questo punto a meno che non vuoi andare su regex di un livello ci difficoltà superiore.

PM Quote
Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 2:50
Mercoledì, 28/11/2012
Magari sono io che faccio esempio contorti ma è semplice..quello che ho da fare (non intendo dire che poi sia semplice metterlo su codice)

Tolgo la parte numerica
Ho liste di 2 tipi, una stringa o 2 stringhe( stringa,divisore,stringa)

Pensavo si potesse piu' facilmente risolvere con le REGEX.

Come primo passo, caricata la lista "stringa" o "stringa-stringa", per capire quale tipo ho, posso vedere se esiste il divisore o meno ( non guardare la sintassi del codice poi vedo di farla corretta)

if char$("-")= true then
liste = lista1 &"-"&lista2
else
if char$("-")= false then
lista=Lista1

stabilito questo passo all'eliminazione della parte numerica inizio/fine stringa preservando quella inside.string

ora, ho chiesto aiuto proprio su questo filtro, non sapendo se esistono comandi specifici o fare ed usare una funzione.

Risolvere con REGEX anche difficili mi piacerebbe molto, almeno vedo di che si tratta ed imparo qualcos'altro.

Un saluto,Ciao



PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 12:11
Mercoledì, 28/11/2012
Allora nel caso si presenti il trattino "-" splitti la stringa e analizzi le due parti separatamente con il codice che ti ho fatto vedere prima

PM Quote
Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 1:34
Giovedì, 29/11/2012
Ciao Roby,ho provato e lavora bene, prevede tutte le condizioni, sia che ci sia 1 che 1111,ma toglie solo i numeri esterni della stringa, come avevi detto,
89pippo89-89pippo05.
xxpippo89-89pippoxx.

Ora devo splittare
Uso il comando Split e come riferimento il separatore -
poi assegno le 2 parti splittate a 2 variabili StringN[1] = (pippo89) e stringN[2] = (89pippo)

Ecco il codice che ho messo su:
...Tue REGEX....
  
Codice sorgente - presumibilmente C# / VB.NET

  1. _line = (stringN);
  2. //qui finisce il tuo codice che mi toglie i numeri di inzio/fine linea cosi': xxpippo89-89pippoxx
  3. // continuo...
  4.  
  5.         string[]  stringhe = _line.Split(new Char[]{'-'});
  6.  
  7. stringhe[1] = System.Text.RegularExpressions.Regex.Replace(stringhe[1], "^[0-9]*(.*)$", "$1");
  8.                               {
  9.  
  10.         stringhe[1] = new string(stringhe[1].Reverse().ToArray());
  11.                               }
  12.  
  13. stringhe[2] = System.Text.RegularExpressions.Regex.Replace(stringhe[2], "^[0-9]*(.*)$", "$1");
  14.                               {
  15.  
  16.         stringhe[2] = new string(stringhe[2].Reverse().ToArray());
  17.  
  18.                                }
  19.  
  20.  
  21.        //ora stampo il file ( penso potrei fare anche semplicemente :_line = (stringhe[1] + stringhe[2] )
  22.  
  23.        System.Text.StringBuilder _sb = new System.Text.StringBuilder();
  24.                                   _sb.Append(stringhe[1]);
  25.                                     _sb.Append(stringhe[2]);
  26.                          
  27.                           if (_line!= null)
  28.  
  29.                            _line = (_sb.ToString());
  30.  
  31.                                     else
  32.  
  33.                               _line = ("false");
  34.  
  35.                             }
  36.                         catch (Exception)
  37.                             {
  38.  
  39.                        }
  40.                     }

                

In pratica quello che ho scritto non produce nessun effetto, come se non ci fosse, sono fermo da dove ho cominciato.
..Tue REGEX.... _line = (stringN); che toglie parzialmente la parte numerica.

Possono essere le REGEX, visto che ora sono substringhe mentre prima stringhe?
Oppure dove ho sbagliato?

Ti ringrazio,Ciao:k:


ps:quelle REGEX di altro livello che con una riga facevi tutto potrei vederla?
Te lo chiedo perche' non si finisce mai di  imparare.
thx




Ultima modifica effettuata da fusebyte il 29/11/2012 alle 5:51
PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 13:51
Giovedì, 29/11/2012
Concentrato... crea un metodo public che si occupi di pulire dai numeri la stringa... praticamente un metodo contenente il codice che ti avevo passato con un return della stringa pulita. Esternamente al metodo splitti la stringa e esegui il metodo su le due substring e poi le riunisci. è semplice

PM Quote
Avatar
fusebyte (Normal User)
Expert


Messaggi: 332
Iscritto: 24/12/2008

Segnala al moderatore
Postato alle 17:23
Giovedì, 29/11/2012
Abbi pazienza,puoi farmi un esempio pratico, non so davvero come farlo.
La buona volonta' ce la metto, ma i limiti ...purtroppo ancora ne ho parecchi.

Grazie,Ciao

PM Quote
Pagine: [ 1 2 3 4 5 6 7 ] Precedente | Prossimo