Oppure

Loading
26/11/12 20:56
fusebyte
Provo subito.
Devo fare piu passaggi allora, se vedi l'esempio
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 26/11/12 23:18
aaa
26/11/12 21:28
Roby94
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.
aaa
27/11/12 13:18
fusebyte
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:
aaa
27/11/12 13:52
Roby94
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.
aaa
28/11/12 1:50
fusebyte
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


aaa
28/11/12 11:11
Roby94
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
aaa
29/11/12 0:34
fusebyte
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....
 _line = (stringN);
//qui finisce il tuo codice che mi toglie i numeri di inzio/fine linea cosi': xxpippo89-89pippoxx
// continuo...

        string[]  stringhe = _line.Split(new Char[]{'-'});

stringhe[1] = System.Text.RegularExpressions.Regex.Replace(stringhe[1], "^[0-9]*(.*)$", "");
                              {

        stringhe[1] = new string(stringhe[1].Reverse().ToArray());
                              }

stringhe[2] = System.Text.RegularExpressions.Regex.Replace(stringhe[2], "^[0-9]*(.*)$", "");
                              {

        stringhe[2] = new string(stringhe[2].Reverse().ToArray());

                               }


       //ora stampo il file ( penso potrei fare anche semplicemente :_line = (stringhe[1] + stringhe[2] )

       System.Text.StringBuilder _sb = new System.Text.StringBuilder();
                                  _sb.Append(stringhe[1]);
                                    _sb.Append(stringhe[2]);
                          
                          if (_line!= null)

                           _line = (_sb.ToString()); 

                                    else

                              _line = ("false");

                            }
                        catch (Exception)
                            {

                       }
                    }
      


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 29/11/12 4:51
aaa
29/11/12 12:51
Roby94
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
aaa