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 - Estrarre parti di testo da stringhe simili
Forum - C# / VB.NET - Estrarre parti di testo da stringhe simili

Avatar
mokuba (Normal User)
Newbie


Messaggi: 1
Iscritto: 30/10/2009

Segnala al moderatore
Postato alle 0:58
Venerdì, 30/10/2009
Salve a tutti,
avrei la necessità di estrarre da una serie di stringhe tipo la seguente

(Ns. Conferma d'Ordine-2008-231 del 26/02/2008)

il numero 2008-231 e la data, che ovviamente cambiano.
Immagino che siano di aiuto le espressioni regolari, ma non saprei come usarle.
E' possibile ricavare questi dati (variabili) da una stringa con quel formato fisso ?
Vi ringrazio anticipatamente per l'eventuale aiuto.

PM Quote
Avatar
GoLDBeRG (Ex-Member)
Expert


Messaggi: 331
Iscritto: 19/12/2005

Segnala al moderatore
Postato alle 8:33
Venerdì, 30/10/2009
con un po di logica possiamo arrivarci....

dim conto as integer=0
dim finale as string

for each lettera as char in stringa
    if isnumeric(lettera) or lettera="-" then
            finale &= lettera
            conto +=1
    else
            if conto >0 then
                exit for
            end if
    end if
next

dovrebbe funzionare...

PM Quote
Avatar
ruggy94 (Member)
Guru


Messaggi: 890
Iscritto: 21/04/2008

Segnala al moderatore
Postato alle 14:37
Venerdì, 30/10/2009
Diciamo che il tuo codice dovrebbe funzionare, ma non tiene conto (ad esempio) del primo trattino (-) nella stringa.
Codice sorgente - presumibilmente C# / VB.NET

  1. Ns. Conferma d'Ordine-2008-231 del 26/02/2008


Quello tra Ordine e 2008 non va considerato, mentre il tuo codice lo fa.

Dato che hai nominato le Regex, puoi farlo benissimo con quelle...
Una cosa del genere:
Codice sorgente - presumibilmente C# / VB.NET

  1. (Ns\. Conferma d\'Ordine\-)(?<Gruppo1>\d{4}\-\d+)( del )(?<Data>\d{2}\/\d{2}\/\d{4})


PM Quote
Avatar
GoLDBeRG (Ex-Member)
Expert


Messaggi: 331
Iscritto: 19/12/2005

Segnala al moderatore
Postato alle 12:43
Sabato, 31/10/2009
dim conto as integer=0
dim finale as string

for each lettera as char in stringa
    if isnumeric(lettera) or lettera="-" then
            finale &= lettera
            conto +=1
    else
            if conto >0 then
                exit for
            end if
    end if
next

finale=finale.remove(0,1)

ora va :D

PM Quote