Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di brumac
    Registrato dal
    Jul 2003
    Messaggi
    187

    [c#] Estrarre numero da stringa

    Salve a tutti,
    mi chiedevo se esiste una funzione che fa quanto riportato di seguito, oppure spero che qualcuno mi dia una dritta su come fare....

    Ho un campo varchar su un DB SQLServer, in cui sono contenute informazioni del tipo:

    '3 minuti di recupero'
    '3'
    'minuti 4'
    'recupero 5'
    'minuti di recupero 5'

    quindi in ogni stringa c'è sicuramente uno ed un solo numero.
    Esiste un modo per estrarre tale numero dalla stringa; quindi per l'esempio sopra vorrei ottenere rispettivamente:
    3
    3
    4
    5
    5

    fare un cast e memorizzare questi valori in un array di interi, per fare alcuni calcoli. Spero di essere stato chiaro (non chiedetemi perchè il DB è fatto così; se l'avessi costruito io, l'avrei fatto diversamente).
    Vi ringrazio

  2. #2
    se cerchi una funzione da implementare nella query non ti so rispondere, però se vuoi un suggerimento su come fare una cosa del genere da codice ti posso dire questo:

    tu carichi il tuo campo in un array:
    string[] myArray = tuovaloreDB.Split(" ".ToCharArray());

    in questo modo in myArray avrai tutte le parole del campo. Ora non dovrai fare altro che scorrere l'array e vedere quali indici contengono numeri.


    ciao.

  3. #3
    Utente di HTML.it L'avatar di brumac
    Registrato dal
    Jul 2003
    Messaggi
    187
    Ma se avessi la stringa nel DB:

    '5minuti'

    oppure

    minuti di recupero3'

    questo metodo non andrebbe.
    Non c'è un modo di scorrere tutti i caratteri di una stringa uno alla volta? se trovo un numero lo restituisco, altrimenti passo ad esaminare il carattere successivo.

    C'è una funzione in c# simile all' 'instance of' di Java?
    Altrimenti come faccio a capire se un determinato carattere è o no un intero?

  4. #4
    Ho scritto e testato un esempio


    codice:
    private void Page_Load(object sender, System.EventArgs e){
    	string[] a = {"minuti5","recupero 2","tempo 10"};
    	int i;
    	for(i=0;i<a.Length;i++){
    		Response.Write(GetNumero(a[i].ToString()) + "
    ");		
    	}
    }
    
    private string GetNumero(string s){
    	string res ="";
    	int x;
    	for(x=0;x<s.ToCharArray().Length;x++){
    		if ( char.IsNumber(s.ToCharArray()[x])){
    			res = res + s.ToCharArray()[x].ToString();
    		}
    	}
    	return res;
    }
    Fammi sapere
    Ciao
    K
    Kalman

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Kalman
    Ho scritto e testato un esempio


    codice:
    private void Page_Load(object sender, System.EventArgs e){
    	string[] a = {"minuti5","recupero 2","tempo 10"};
    	int i;
    	for(i=0;i<a.Length;i++){
    		Response.Write(GetNumero(a[i].ToString()) + "
    ");		
    	}
    }
    
    private string GetNumero(string s){
    	string res ="";
    	int x;
    	for(x=0;x<s.ToCharArray().Length;x++){
    		if ( char.IsNumber(s.ToCharArray()[x])){
    			res = res + s.ToCharArray()[x].ToString();
    		}
    	}
    	return res;
    }
    Fammi sapere
    Ciao
    K
    E se qualcuno scrivesse:

    'minuti di recupero cinque' :master:

    e se scrivesse:

    '2 recuperi di cinque minuti' :master:

    Pietro

  6. #6
    Da quanto ho capito a lui interessa solo il numero e non tutto il resto.

    Originariamente inviato da brumac

    Non c'è un modo di scorrere tutti i caratteri di una stringa uno alla volta? se trovo un numero lo restituisco, altrimenti passo ad esaminare il carattere successivo.

    Però magari non ho capito io,cosa ne dici pietro09?

    Ciao
    K
    Kalman

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Kalman
    Da quanto ho capito a lui interessa solo il numero e non tutto il resto.




    Però magari non ho capito io,cosa ne dici pietro09?

    Ciao
    K
    Guarda, io sono a fine giornata e volevo solo scherzare

    Comunque resta il fatto che delle scritte come quelle sono facilmente interpretabili da un umano, ma non si possono tradurre con altrettanta facilità in un algoritmo. Perciò, la faccenda, non è per niente banale, ma non è pane per i miei denti

    Pietro

  8. #8
    Sorry pietro ma mi sembra che a volte certe persone cerchino il pelo nell'acqua o sminuiscano quanto fatto da altri.
    Non prenderla come una cosa personale ma come un sfogo in generale,dato che così è!
    Qui ci si aiuta uno con l'altro e lo facciamo tutti (o almeno io) per divertimento e passatempo!!
    Quindi se ha volte non si capisce la domanda o si cicca il codice può capitare siamo umani.
    Mi sembra più incomprensibile invece chi si aspetta una tua risposta anche quando deve soffiarsi il naso o scegliere un font diverso senza cercare (o provare di )capire quanto gli hai spiegato o postato.

    Scusate tutti...
    Mettetemi OT ed alla gogna

    Ciao
    K
    Kalman

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Prima ho sbagliato io a premere quote invece che rispondi. E la mia domanda provocatoria era diretta all'autore del messaggio. E se non si sorride ogni tanto dove andremo a finire?

    Comunque, se proprio bisogna essere serii, mi piace il suggerimento di Daniele80. :master: Forse forse userei le espressioni regolari per estrarmi tutte le parole della frase. Allora è facile controllare se una parola è un numero

    Buon fine settimana, ciao
    Pietro

  10. #10
    Utente di HTML.it L'avatar di brumac
    Registrato dal
    Jul 2003
    Messaggi
    187
    Grazie Kalman, mi va bene il tuo codice.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.