Newsgroup: it.comp.lang.visual-basic
Titolo: Estrazione numeri da una stringa

Devo astrarre solo valori numerici da una stringa:
es.
Stringa = -123209AB457
Risultato = 123209457
Ringrazio tutti per la collaborazione.

 Risultato = 123209457
cicla la stringa e utilizzando la funzione ISNUMERIC ti raccogli tutti i
numeri, ciao

Ciao, prova cosě
    For l_i = 1 To Len(Stringa)
        If IsNumeric(Mid(Stringa, l_i, 1)) Then
            Risultato = Risultato & Mid(Stringa, l_i, 1)
        End IF
    Next l_i
Byez
Tango

 ha scritto nel messaggio
news:a626p2$6gf$1...@fe2.cs.interbusiness.it...


 ha scritto nel messaggio
news:a626p2$6gf$1...@fe2.cs.interbusiness.it...


 Perchč?
Perchč sicuramente stai facendo un pasticcio.
La Len(Stringa) funziona e la devi lasciare com'č (secondo quale logica hai
usato quella tua funzione?)
Piuttosto controlla che la stringa che passi sia corretta.
Magari se posti il codice incriminato...
Ciao

 La Len(Stringa) funziona e la devi lasciare com'è (secondo quale logica


 Spero tu abbia capito
Sě, e tu?
ciao
ugo
-----------------------------------
Links:
Sito Comune: 
www.it-lang-vb.net
MSDN: 
msdn.microsoft.com

 posto di ((LEN(stringa)*2)+1)  avessi messo 9).
Quindi
Stringa="559943235"
Len(Stringa) ti ritorna 4????
Ma sei sicuro che Stringa sia di tipo String, e non array di caratteri o
altri formati numerici???
Posta il codice (ovviamente non quello già postato due volte, ma anche la
parte dove inserisci la stringa in 'Stringa').
Alberto

 ha scritto nel messaggio
news:a62hha$8vb$1...@newsreader.mailgate.org...


 ha scritto nel messaggio
news:a62hov$6idc$1...@stargate1.inet.it...



cvd.    :-)
esempio:
dim nLong as long
dim stringa as string
nLong= 559943235
stringa= trim(str(nLong))
    For l_i = 1 To Len(Stringa)
        If IsNumeric(Mid(Stringa, l_i, 1)) Then
            Risultato = Risultato & Mid(Stringa, l_i, 1)
        End IF
    Next l_i



Non se se tu stia scherzando o meno.
Comunque:
Tu hai un textbox, o qualcosa del genere, dove l'utente digita un insieme di
caratteri da cui vuoi ricavare un numero.
Poi vuoi mettere questo numero in una variabile long.
giusto??
allora, vediamo se questo funziona:
Dim Pippo as String
dim l_i as long
dim Stringa as long
dim risultato as string
Pippo=Textbox1.Text 'O comunque quello che ti popola la variabile, che ti
ostini a non postare....
    For l_i = 1 To Len(Pippo)
        If IsNumeric(Mid(Pippo, l_i, 1)) Then
            Risultato = Risultato & Mid(Pippo, l_i, 1)
        End IF
    Next l_i
stringa=clng(risultato)
Secondo me ha buone possibilità di funzionare.....
Alberto

 ha scritto nel messaggio
news:a62i0h$ag385$1...@ID-96367.news.dfncis.de...



Mi sembra che qui si giochi con carte truccate!
Non dicevi di voler estrarre i numeri da una stringa tipo "1234D45"???
E come fai a mettere questa in un long???
O il problema non si pone o qualcuno qui bara.
Ciao

 O il problema non si pone o qualcuno qui bara.
Ho rinunciato a mandarlo a cag***are perchè forse non è colpa sua.
Aveva detto di non poter cambiare assolutamente il tipo della variabile da
long a string, poi ha risolto mettendola di tipo string.
Di fronte a certe cose, mi sento veramente senza possibilità di
confronto....
Alberto

 ha scritto nel messaggio
news:3c84...@news.cis.it...

Dai... questi sě possono essere i problemi di un giovane newby.   :-)
A me fanno girare... davvero solo quelli che _non ci provano proprio_
 a risolvere i problemi...
ciao
ugo

 ha scritto nel messaggio
news:a62m9e$cm9$1...@newsreader.mailgate.org...



Quindi la variabile Stringa, di tipo LONG !!!!! e non modificabile, contiene
il valore "-ab559943564".
Ahh, adesso č tutto chiaro.
Sě, sě, hai ragione tu, hai ragione tu...
Alberto

 Dai... questi sì possono essere i problemi di un giovane newby.   :-)
Potresti aver ragione, però, se ho una var = "AB1234", e voglio tirar fuori
_da_qui_ 1234, io uso
Long = Func("AB1234")
e non certo
Long = Func(1234)
Perchè altrimenti il risultato lo conosco già!
Mi sembra pura e semplice logica (e sottolineo _semplice_), e non un
problema di VB.
Ciao


Questo è certo.
ciao
ugo

Di seguito trovi una funzione che effettua in modo generalizzato (e quindi
non solo per numeri)
quanto ti serve.
Luc
Function FiltraStringa(TestoInput As String, CaratteriValidi As String) As
String
    '
    '
    ' Function: FiltraStringa
    '
    ' ===============================================================
    ' Creato da   : luc
    ' Data        : 02-18-2002  <Ora : 10:05 >
    ' Modifiche   :
    '
    ' ===============================================================
    '
    ' Descrizione :
    ' La funzione effettua il filtraggio di una stringa,  restituendo
    ' in uscita i soli caratteri ammessi e contenuti nella  variabile
    ' CaratteriValidi.
    '
    ' ===============================================================
    '
    ' Note        :
    ' Esempio di chiamata -> Numeri = "0123456789,"
    '   MiaStringa = FiltraStringa(Mappa.Text1.text, Numeri)
    '
    ' ===============================================================
    ' Purpose:
    '
    '    TestoInput:
    '    CaratteriValidi:
    '    Return value:
    '
    ' ===============================================================
    '
    Dim i As Long, result As String
    '
    For i = 1 To Len(TestoInput)
        If InStr(CaratteriValidi, Mid$(TestoInput, i, 1)) Then
            result = result & Mid$(TestoInput, i, 1)
        End If
    Next
    '
    FiltraStringa = result
    '
End Function

Dimenticavo, ma è ovvio, una volta che hai la stringa con i soli numeri, la
trasformi
in un dato numerico del  tipo che desideri ...
Luc