Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
String to int
mercoledì 25 agosto 2004 - 08.53
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
ken
Profilo
| Newbie
16
messaggi | Data Invio:
mer 25 ago 2004 - 08:53
Ciao,
sto sviluppando un'applicazione c# che a un certo punto deve trasformare una stringa in int.
Vorrei sapere se esiste un metodo che controlla se una stringa è un intero, per poi poterla convertire usando per esempio: mioInt = int.Parse(miaStr);...
Un idea l'ho avuta già, mi sono scritto questo metoso:
public int StringToInt(string st)
{
try { return int.Parse(st);}
catch { return -1; }
}
Il problema che questa soluzione è lentissima, specialmente se le mie stringhe (potenziali int) sono molte!! magari esiste qualche cosa di più veloce??
grazie
ciao
alextyx
Profilo
| Expert
668
messaggi | Data Invio:
mer 25 ago 2004 - 10:00
Caro Ken, evidentemente il problema ti angoscia nn poco, dato che lo hai postato per ben 3 volte! :-)
Comunque io uso Vb.Net, quindi nn posso passarti codice direttamente, nè so dirti se la tua soluzione basata sull'intercettazione dell'errore sia più o meno veloce della mia, comunque io uso effettuare preventivamente un test usando ISNUMERIC:
If ISNUMERIC(StringaPippo) THEN
Poi, se la stringa è effettivamente convertibile in numero (ISNUMERIC mi garantisce che sia convertibile in un DOUBLE), confronto il valore convertito direttamente in double con quello successivamente ottenuto considerando solo la parte intera del DOUBLE. Se i valori coincidono, o nn ci sono decimali, o sono uguali a zero.
Un altro metodo che mi viene in mente adesso, quindi che potrebbe eseere assolutamente sbagliato, è quello di controllare la stringa carattere per carattere, assicurandoti che ci siano solo cifre (If CHAR.ISDIGIT(....)) e che la prime nn sia zero. Questo dovrebbe eliminare anche la possibilità di decimali, dato che eliminerebbe la possibilità di un carattere separatore.
Poi resta soltanto da stabilire se il valore della stringa è esprimibile entro i limiti dell'integer. Ovviamente puoi anche controllare se un primo carattere è un segno meno o segno più e poi chiedere che il secondo nn sia 0, oppure, in questo caso, sostituirlo con una stringa nulla, per evitare numeri 'brutti', come: -0001578 arrivando ad ottenere, ad esempio, un ben più pulito -1578.
Insomma, puoi sbizzarrirti, ma nn so se poi guadagnerai in velocità. Se l'eccezione ti si verifica spesso, direi senz'altro di sì, perchè se nn ricordo male, la notifica di un eccezione è una cosa piuttosto lenta, almeno un VB.Net.
Buon lavoro!
ken
Profilo
| Newbie
16
messaggi | Data Invio:
mer 25 ago 2004 - 10:35
ciao,
buone idee.. adesso provo!!
per ora ti ringrazio
ciao
stefano
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !