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:
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 è " 0123 456789" l'output del programma è il seguente:
Stringa non processata: " 0123 456789";
Stringa mod_2: "0123456789";
Stringa mod_2 convertita in intero: "123456789";
Se la stringa origin è "+39 0123 456789" l'output del programma è il seguente:
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";
Secondo voi perchè si verifica questo errore? C'è un modo per evitarlo? E se si, quale? Vi prego, aiutatemi, sono in crisi nera.