Ciao a tutti!![]()
Premetto che sono abbastanza inesperto con Java e quindi probabilmente molti di voi rideranno delle mie lacune, ma proprio questo problema non sono riuscito a risolverlo.
Dunque, vorrei avere una funzione che analizza una stringa (contenente un numero telefonico scritto ad esempio nella forma "+39 0123 45678"), rimuovendone gli spazi e alcuni caratteri ('-' e '/') e modificando il carattere + con "00". Il codice è il seguente:
Se la stringa origin è " 0123 456789" l'output del programma è il seguente:codice:/* Rimpiazza caratteri dentro una stringa */ import java.io.*; import java.util.*; class Rimpiazza { public static void main(String[] args) throws IOException { String orig = "+39 0123 456789"; System.out.println("Stringa non processata: \"" + orig+"\";"); String mod_2; mod_2 = orig.replaceAll("/",""); // Elimina carattere / mod_2 = mod_2.replaceAll("-",""); // Elimina carattere - mod_2 = mod_2.replaceAll("\\+","00"); // Elimina carattere + mod_2 = mod_2.replaceAll("^\\s+", ""); // Elimina spazi all'inizio della stringa mod_2 = mod_2.replaceAll("\\s+$", ""); // Elimina spazi alla fine della stringa mod_2 = mod_2.replaceAll("\\b\\s{1,}\\b", ""); // Elimina spazi singoli e multipli all'interno della stringa System.out.println("Stringa mod_2: \"" + mod_2 +"\";"); int mod_2_int = -1; try { mod_2_int = Integer.parseInt(mod_2); } catch (NumberFormatException nfe){ nfe.printStackTrace(); } System.out.println("Stringa mod_2 convertita in intero: \"" + mod_2_int +"\";"); } }
Se la stringa origin è "+39 0123 456789" l'output del programma è il seguente:Stringa non processata: " 0123 456789";
Stringa mod_2: "0123456789";
Stringa mod_2 convertita in intero: "123456789";
Secondo voi perchè si verifica questo errore? C'è un modo per evitarlo? E se si, quale? Vi prego, aiutatemi, sono in crisi nera.Stringa non processata: "+39 0123 456789";
Stringa mod_2: "00390123456789";
java.lang.NumberFormatException: For input string: "00390123456789"
at java.lang.NumberFormatException.forInputString(Unk nown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Rimpiazza.main(Rimpiazza.java:26)
Stringa mod_2 convertita in intero: "-1";![]()

Rispondi quotando