 
View Full Version : [java] identificare coasa c'è in una stringa
gaglioppo
09-05-2006, 11:46
ciao amici,
 
 ho una stringa in java che potrebbe contenere: un nome, un intero, un numero con virgola oppure una percetuale del tipo "10%".
Come potrei identificare con esattezza in quale caso mi trovo?
ho provato a fare Double.parseDouble(stringa); e cercare di catturare l'errore ma nn ci sono ancora riuscito.... suggerimenti?
grazie
ciao amici,
 
 ho una stringa in java che potrebbe contenere: un nome, un intero, un numero con virgola oppure una percetuale del tipo "10%".
Come potrei identificare con esattezza in quale caso mi trovo?Quindi riepiloghiamo. Puoi avere:
- "blabla"
- "12345"
- "67,89"
- "12%"
Giusto?
Come suggerimento potrei consigliarti di creare un metodo apposito che data una stringa in input, restituisce una costante intera che indica il tipo di stringa.
Una cosa: il caso della stringa con virgola "67,89", lo devi poi convertire in un numero (come float/double)?
ciao amici,
 
 ho una stringa in java che potrebbe contenere: un nome, un intero, un numero con virgola oppure una percetuale del tipo "10%".
Come potrei identificare con esattezza in quale caso mi trovo?
ho provato a fare Double.parseDouble(stringa); e cercare di catturare l'errore ma nn ci sono ancora riuscito.... suggerimenti?
grazie
Per gli interi e i numeri con virgola sei sulla strada giusta, sempre che tu intenda attenerti allo standard Java sul formato dei numeri. Cos'è che non riesci a fare utilizzando Double.parseDouble(s)?
Per le percentuali ed altre cose puoi utilizzare le espressioni regolari (java.util.regex).
Per le percentuali ed altre cose puoi utilizzare le espressioni regolari (java.util.regex).
Io utilizzerei le regex per tutto:
nome -> /[a-zA-Z]+/
intero -> /\d+/
float -> /\d+\.\d+/
percentuale -> /\d+%/
considerando che in java hanno una sintassi un pelino diversa (ci vogliono due \\ prima degli identificatori \d,\w, ecc...
ciao amici,
 
 ho una stringa in java che potrebbe contenere: un nome, un intero, un numero con virgola oppure una percetuale del tipo "10%".
Come potrei identificare con esattezza in quale caso mi trovo?
ho provato a fare Double.parseDouble(stringa); e cercare di catturare l'errore ma nn ci sono ancora riuscito.... suggerimenti?
grazie
Devi lavorarci con un po' di if e try catch; siccome credo che un po' di try catch annidati potrebbero rallentare un filino, io farei:
boolean trovato = false;  // Generico
boolean isInt = false;
boolean isFloat = false;
boolean isPercent = false;
boolean isString = false;
try {  // Provo l'intero
 Integer.parseInt(dato);
 isInt = true;
 trovato = true;
} catch(Exception e) {}
if (!trovato) try // Prova double
{
  Float.parseFloat(dato);
  isFloat = true;
  trovato = true;
} catch (Exception e) {}
if (!trovato) try // O è string o è %
{
   // Testi che finisca con %, se finisce con % provi il parseFloat, se fallisce è  testo puro
  // Sono di fretta, non riesco a finire ;)
} catch (Exception e) {}
gaglioppo
09-05-2006, 20:43
beh,per ora mi sto accontentando di qualcosa di simile a quello che mi segnala Pinok,
in realtà, però le istruzioni le metto direttamente nel catch, va bene o potrei avere problemi?
per ora mi riconosce tutto, anche
" 45,66% i.d." che è una stringa che ho trovato, è una percentuale ma c'è anche dell'altro.
grazie cmq per tutti gli interventi, vi ringrazio sempre poco per quel che fate.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.