Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
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.
|
|
fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
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
|
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
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.
|
|
fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
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
|
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
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
|
|
fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
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 |
_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]*(.*)$", "$1");
{
stringhe[1] = new string(stringhe[1].Reverse().ToArray());
}
stringhe[2] = System.Text.RegularExpressions.Regex.Replace(stringhe[2], "^[0-9]*(.*)$", "$1");
{
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
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 |
|
Roby94 (Member)
Guru
Messaggi: 1170
Iscritto: 28/12/2009
|
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
|
|
fusebyte (Normal User)
Expert
Messaggi: 332
Iscritto: 24/12/2008
|
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
|
|